在控制台中创建的Symfony FilesystemAdapter在Controller中不可见

时间:2018-07-10 10:29:18

标签: symfony caching adapter

我有问题,希望有人可以帮助我。

在命令中(执行:php bin/console app:cronjob makeCharts),我创建了一个FilesystemAdapter-Cache:

protected function makeUserCounterStats($input, $output)
{
    $entries = 30;

    $em = $this->getContainer()->get('doctrine')->getEntityManager();
    $users = $em->getRepository("App:User")->getUserCounter();
    $users = (int)$users['users'];

    $cacheInstance = new FilesystemAdapter('cache.app');

    $data = array(
        'dataset' => array(),
        'scalar' => array(),
        'entries' => $entries
    );

    //get cache item
    $cacheItem = $cacheInstance->getItem('stats.user.counter');

    if ($cacheItem->isHit() && is_array($cacheItem->get())) {
        $data = $cacheItem->get();
        $data['entries'] = $entries;

        $data['dataset'][] = $users;
        $data['scalar'][] = time();

    }
    else {
        $data['dataset'][] = $users;
        $data['scalar'][] = time();

    }

    if (count($data['dataset']) > $data['entries']) {
        array_shift($data['dataset']);
        array_shift($data['scalar']);
    }

    $cacheItem->set($data);
    $cacheInstance->save($cacheItem);

    dump($data);
}

这有效,如果调用函数,dump($data)将为数组分配一个新值。

现在,我尝试从Controller加载此缓存:

    /**
        * @Route("/stats/", name="index_stats")
    */
    public function indexStatsAction() {
        $cacheInstance = new FilesystemAdapter('cache.app');

        //load users
        $cacheItem = $cacheInstance->getItem('stats.user.counter');
        dump($cacheItem);
        dump($cacheItem->get());
        exit;
    }

控制器中的转储向我显示了此信息:

CacheItem {#479
    key: "stats.user.counter"
    value: null
    isHit: false
    expiry: null
    defaultLifetime: 0
    tags: []
    prevTags: []
    innerItem: null
    poolHash: null
}

控制台中的转储当前显示30个条目和isHit: true ...

我是否需要设置一些值以将控制台FilesystemAdapter共享到Controller?

我找不到我的问题。

我希望有人能帮助我,并向我展示我的失败。

谢谢。

0 个答案:

没有答案