キャッシュ-PHPfilemtime()が機能しない-キャッシュの問題?
JavaScript / HTMLアプリからPOSTで実行されたPHPファイルからfilemtime()を呼び出しています。テキストエディタでテストファイルを編集した場合でも、2秒ごとに別のテストHTMLファイルに対して同じタイムスタンプが返され、ローカルファイルシステムでDTMの変更を確認できます。
アプリ全体をリロードすると(Ctrl + F5)、報告されるタイムスタンプは同じままです。タイムスタンプが変わることもありますが(4時間後に1回)、何が原因かわかりません。
私のコードのPHP部分は次のようになります:
clearstatcache(true,$FileArg);
$R=filemtime($FileArg);
if ($R===false)
echo "error: file not found";
else
echo $R;
このコードは、2秒ごとにsetIntervalを使用して、PHPファイル名のみを指定して同期Ajaxによって呼び出されます。
Windows 10 Home、HTTPアクセス用にローカルで実行されているApache 2.4.33、PHP7.0.30。
追加:
動作はFirefox、Chrome、Opera、Edgeで同じです。
答え :
解決策:
結果はキャッシュされています: http://php.net/manual/en/function.filemtime.php
注:この関数の結果はキャッシュされます。詳細については、clearstatcache()をご覧ください。
Windowsが書き込みキャッシュを実行しているようです...
一方、stat()には追加の注意事項があります:
注:
時間分解能はファイルシステムごとに異なる場合があることに注意してください。
統計出力を確認する価値があるかもしれません。
編集
バグか、Windowsがうまく機能していない可能性がありますが、WindowsコマンドでDTMを表示して
shell_exec
を実行することもできます。
答え :
解決策:
ニュース:私のアプリでは通常のバグであることが判明しました。 Ajax呼び出しをコピーし、テストファイルに適用するために編集するのを忘れました。そのため、代わりに私のアプリファイルの1つに適用され、そのアプリファイル(FTAdjust.js)を編集したときにのみDTMが更新されました。
正しいテストファイルを指定すると、別のプロセスで編集するたびにDTMが正常に更新されます。
自分のバグを顔で見つめても、見つけるのが難しい場合があります。私は他のどこでも探し続けましたが、間違いはどこにありましたか。
他の人とは無関係なので、Stack Overflowからスレッドを削除する方法はありますか?
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。