ホームページ  >  記事  >  バックエンド開発  >  PHP がファイルを削除して再構築した後、ファイルの作成時間 (filectime) が変わらない問題を解決するにはどうすればよいですか? ?

PHP がファイルを削除して再構築した後、ファイルの作成時間 (filectime) が変わらない問題を解決するにはどうすればよいですか? ?

WBOY
WBOYオリジナル
2016-10-11 14:23:311529ブラウズ

  1. phpはtest.htmlという名前のファイルを作成し、filectimeを使用して作成時刻t1を取得します

  2. phpはtest.htmlという名前のファイルを削除します

  3. phpはtest.htmlという名前のファイルを再作成し、filectimeを使用して作成時刻t2を取得します

なぜ t1 = t2 なのでしょうか? ? 作成時間が更新されないのはなぜですか? ? ファイルステータスキャッシュをクリアするためにclearstatcache関数を使用しましたが、機能しませんでした。この問題を解決するにはどうすればよいですか? ? (キャッシュファイルを再生成するかどうかを判断する際に、キャッシュファイルの作成時間を知ることが重要なので、解決してください~)
以下は、この状況で発生する問題のコードです(少し濃いのでお願いします)辛抱強く読んでください) ):

リーリー

返信内容:

  1. phpはtest.htmlという名前のファイルを作成し、filectimeを使用して作成時刻t1を取得します

  2. phpはtest.htmlという名前のファイルを削除します

  3. phpはtest.htmlという名前のファイルを再作成し、filectimeを使用して作成時刻t2を取得します

なぜ t1 = t2 なのでしょうか? ? 作成時間が更新されないのはなぜですか? ? ファイルステータスキャッシュをクリアするためにclearstatcache関数を使用しましたが、機能しませんでした。この問題を解決するにはどうすればよいですか? ? (キャッシュファイルを再生成するかどうかを判断する際に、キャッシュファイルの作成時間を知ることが重要なので、解決してください~)
以下は、この状況で発生する問題のコードです(少し濃いのでお願いします)辛抱強く読んでください) ):

リーリー

アプリケーションのシナリオに関する限り:

  • filemtime はキャッシュのタイムアウト判定ロジックをより適切に完了できます。

  • 書き換え後に filemtime が変更されるため、ファイルを削除する必要はありません。
  • ファイルを削除したのには理由があるはずですが、回答の下の「オフトピック」を参照してください

  • PHPでのファイルの削除と作成に関して

  • 著者は次のコードを使用して実験を行いました
リーリー

結果:

Windows (Windows 10 x64)

2回目に実行しても、戻り時間は確かに1回目と同じです。

しかし、このテキストが 2 秒間消えてから再び生成されるのがわかりました。これは、Windows ではそのようなロジックを持っている可能性があります (詳しくは調べていません)。図に示されているのは、2 回目の実行後に取得したファイル属性です。


Linux 上の CentOS

返却時間PHP がファイルを削除して再構築した後、ファイルの作成時間 (filectime) が変わらない問題を解決するにはどうすればよいですか? ?が変更になります

閑話休題

私が書いた、または見た一部のファイル キャッシュ エンジンでは、読み取りキャッシュ操作でタイムアウトが検出された場合でも、

キャッシュ ファイル

は削除されません。

私はここで怠けているわけではありません、結局のところ、リンクを解除するのは簡単です

  • 代わりに、必要な I/O リクエストが減り、

    同時実行によって引き起こされるリンク解除のリスクが減ります (

    理由を考えてください)
  • しかも、このキャッシュにアクセスしている以上、慣性的に考えると間違いなく上書きされるので、削除後に再構築する意味はあまりありません

  • 唯一の問題は、ディスク領域の占有です。たとえば、長期間アクセスされていない一部のキャッシュがまだ領域を占有している場合、通常はそれを許容するか、コードを独自に実装してスケジュールされたタスクを使用して削除するかを選択します。それ

  • 賢くコンパイルされたファイルはあなたのシナリオに似ています、彼のアプローチは次のとおりです: 削除しないでください

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。