我有问题,希望有人可以帮助我。
在命令中(执行: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?
我找不到我的问题。
我希望有人能帮助我,并向我展示我的失败。
谢谢。