PHPはシングルスレッドです。つまり、次に進む前に一度に1つの命令を実行します。つまり、PHPは、関数が実行を終了するのを自然に待ってから、次のステートメントに進みます。
私は自分のマシンでコードを実行しようとしましたが、関数を完了してメッセージを表示する前に、ファイルを変更するまで適切に待機しました。
コードに失敗している可能性のあるものは何も表示されません。の作成はループ内$lfilemodのチェックと同じ方法で実行されるため、ファイルに問題があった場合でも、whileそのループの条件が返され、実行されます(両方のエラーで返されるため、条件は次のようになります。明らかに)。TRUEfilemtimeFALSE(FALSE == FALSETRUE
PHPスクリプトは、そのループを実行する前にファイルを変更しますか?その場合、によって返される初期値はfilemtime、スクリプトが最初に開始されたときからの変更時刻である可能性があります。ループ内で実行するclearstatcacheと、スクリプトの前半で変更によって生じた新しい変更時間を取得します。
私のアドバイス:
clearstatcacheの値を設定する前に実行してみてください$lfilemod。これにより、値がクリーンであり、リンゴとリンゴをループでチェックされているものと比較していることがわかります。
ファイルが実際に変更されていないことを確認してください。コードの最初と最後にいくつかのデバッグ行を配置して、ファイルの最終変更時刻を出力してから、2つを自分で比較して、PHPが変更時刻の変更を報告しているかどうかを確認してください。
これは言うまでもありませんが、開発中にすべてのエラーを表示するようにPHPが構成されていることを確認する必要があります。そうすれば、問題が発生した時期と方法がすぐにわかります。display_errorsファイルで設定が有効Onになっていることphp.ini(またはini_set()ファイル自体を変更できない場合は使用)、およびPHP <=5.3またはPHP5.4(そのバージョンの一部)にerror_reporting()設定されていることを確認してください。より良い方法は、PHPのバージョンに関係なく、すべてのエラー報告を効果的にオンにするエラー報告を設定することです。E_ALL | E_STRICTE_ALLE_STRICTE_ALL-1
これらの変更を加えて、コードを再実行してみてください。ファイルが実際に変更されていることがわかる場合は、コードが機能していることがわかります。ファイルが変更されていない場合は、少なくとも検索できるエラーがあるか、ここでお問い合わせください。