2016-10-07 19 views
1

キャッシュアダプタからデフォルトの有効期間を設定する必要がありますが、何か変なことが起こっています。 :/キャッシュコンポーネントのデフォルトの有効期間

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でそれをテストし、同じ問題も発生します。


キャッシュアダプタのデフォルトの寿命(コンストラクタのパラメータ)で何が起こりますか?私はここに何かが欠けています:/?

+0

このバグの古いバージョンがあるかどうかを確認してください。https://github.com/symfony/symfony/pull/19442 – Matteo

+1

はい、それはありがとう@Matteo 'composer update'です! – yceruto

+1

私は答えとしてコメントを投稿できるので、質問を閉じることができますか? – Matteo

答えて

1

は古い問題、それを修正する必要がsymfonyフレームワークのアップグレード3.1

前のフレームワークのバージョンに影響を与える[Cache] Fix default lifetime being ignoredです。

+1

...またはキャッシュコンポーネントをアップグレードすると修正されます。 – yceruto

関連する問題