缓存组件中的默认生存期


Default lifetime in Cache Component

我需要从缓存适配器配置默认生存期,但发生了一些奇怪的事情,以下不工作!:/

use Symfony'Component'Cache'Adapter'FilesystemAdapter;
// in seconds; applied to cache items that don't define their own lifetime  
// 0 means to store the cache items indefinitely (i.e. until the files are deleted)
$cache = new FilesystemAdapter('my_namespace', 5); // <-- default lifetime 5 seconds
$latestNews = $cache->getItem('latest_news');
if (!$latestNews->isHit()) {
    $news = ['title' => '...', 'createdAt' => (new 'DateTime())->format('Y-m-d H:i:s')];
    $cache->save($latestNews->set($news));
} else {
    $news = $latestNews->get();
}
参考http://symfony.com/doc/current/components/cache/cache_pools.html filesystem-cache-adapter

第一次,缓存的文件内容显示:

2147483647 <-- 2038-01-18 22:14:07 :/ ?
latest_news
a:2:{s:5:"title";s:3:"...";s:9:"createdAt";s:19:"2016-10-07 09:16:50";}

,当然这个项目不会在5秒后过期:/(我已经手动清除了缓存目录)。

另一方面,如果我们使用$latestNews->expiresAfter(5);,一切都很好:

1475849350 <-- 2016-10-07 10:09:10 'o/ OK
latest_news
a:2:{s:5:"title";s:3:"...";s:9:"createdAt";s:19:"2016-10-07 10:09:05";}
参考http://symfony.com/doc/current/components/cache/cache_items.html cache-item-expiration

物品正确过期后5秒

我用Symfony'Component'Cache'Adapter'ApcuAdapter测试了它,也出现了同样的问题。


缓存适配器的默认生存期(构造函数参数)会发生什么?我遗漏了一些东西:/?

是一个老问题[Cache]修复默认生存期被忽略,影响3.1之前的框架版本

升级Symfony框架应该可以修复它