私は単純なキャッシングシステムを持っています
if (file_exists($cache)) {
echo file_get_contents($cache);
// if coming here when $cache is deleting, then nothing to display
}
else {
// PHP process
}
古いキャッシュファイルは定期的に削除します。たとえば、1時間後にすべてのキャッシュを削除します。if statement
このプロセスは非常に高速ですが、とプロセスの間でキャッシュファイルを削除できると思いfile_get_contents
ます。
つまりif statement
、キャッシュファイルの存在を確認すると、存在します。しかしfile_get_contents
、それをキャッチしようとすると、それはもう存在しません(同時キャッシュ削除プロセスによって削除されます)。
file_get_contents
読み取りプロセス中に削除プロセスが実行されないように、ファイルをロックします。if statement
ただし、がPHPプロセスを最初の条件(の開始前)に送信するときに、ファイルを削除できますfile_get_contents
。
これを回避するためのアプローチはありますか?キャッシュ削除システムは違いますか?
注:このイベントをキャッチする可能性は非常に低いため、実際的な問題は発生しませんでしたが、論理的には可能であり、高負荷で発生するはずです。