2017-01-13 5 views
2

Symfonyを使用してファイルシステムにファイルをキャッシュしています。symfonyのキャッシュエントリから作成タイムスタンプを取得する方法は?

現在私はPHP配列にデコードされているYAMLファイルを持っています.YAMLファイルは、Symfonyキャッシングコンポーネントでキャッシュを保存しています。

私のYAMLファイルが変更されたら、すでにキャッシュに入っていても、再キャッシュする必要があります。キャッシュされたファイル(デコードされたYAMLを保持する)の変更時刻を取得し、それをYAMLファイルと比較する必要があります。

私のYAMLファイルの変更時刻が新しい場合、私は再キャッシュする必要があります。

どうすればキャッシュエントリの作成時間を取得できますか?私はSymfonyがキャッシュエントリに作成時刻を持っていることを知っています。だからデータがあります。私はそれを得るためのきれいな方法があるのか​​疑問に思っています。エントリが次のようになっているため、このことが分かります。

1515867059 
<CacheEntryName> 
<SerializedData> 

1515867059は、作成時のUNIXタイムスタンプです。

誰かが私を助けてくれることを願っています。

編集: 私はキャッシュエントリへの絶対パスを得ることができたと思います。それで私はSplFileInfoオブジェクトを生成し、それからそのような修正時間を得ることができました。

乾杯。

+0

質問:配管または自動プロセスを導入しましたか?その場合は、新しいファイルを展開するときにキャッシュを再作成すれば、情報が正しいことが100%保証されます。もちろん、キャッシュレコーダーはキャッシュウォーマーを介して行うことができるため、アプリケーションがライブに戻る前に実行される単発タスクであるため、パフォーマンスについて心配する必要はありません – DonCallisto

答えて

0

Symfonyキャッシュは現在、これに対処する方法がありません。一時的な解決策として、タイムスタンプを自分で配列に含めました:

$cached->set([ 
    'value' => $value, 
    'timestamp' => time() 
]); 

今のところ動作します。

関連する問題