PHP では、ループの各反復に数秒の遅延を設定したいと考えています。
for ($i=0; $i <= 10; $i++) {
$file_exists=file_exists($location.$filename);
if($file_exists) {
break;
}
//sleep for 3 seconds
}
これどうやってするの?
PHP では、ループの各反復に数秒の遅延を設定したいと考えています。
for ($i=0; $i <= 10; $i++) {
$file_exists=file_exists($location.$filename);
if($file_exists) {
break;
}
//sleep for 3 seconds
}
これどうやってするの?
関数を使用PHP sleep()
します。http://php.net/manual/en/function.sleep.php
これにより、指定された秒数の間、次のループの実行が停止します。だからこのようなもの
for ($i=0; $i <= 10; $i++) {
$file_exists=file_exists($location.$filename);
if($file_exists) {
break;
}
sleep(3); // this should halt for 3 seconds for every loop
}
あなたが何をしているのかわかります...ファイルシステム上のファイルを常にチェックするためにスクリプトを遅らせています(アップロードされているか、別のスクリプトによって書き込まれていると思います)。これは悪い方法です。
Ajax を使用できます。また、タイムアウトを使用して、数秒ごとに PHP スクリプトを呼び出します。これにより、スクリプトの読み込みが遅くなるのを防ぐことができます。また、常に実行し続けることもできます (現在の for ループは 33 秒間だけ実行され、その後停止します)。
データベースを使用できます。場合によっては、データベースへのアクセスの方が HDD へのアクセスよりも高速です。特にビューとキャッシングでは。ファイルを作成する/ファイルをアップロードするスクリプトは、テーブル (つまり file_exists) にフラグを設定でき、データベース内のそのフィールドをチェックするスクリプトを作成できます。
sleep(3)
スレッドを 3 秒間スリープさせる whichを使用できます。
phpの修正スリープ方法は秒単位です。
SupervisorDを使用して PHP Daemon スクリプトを使用することを検討しましたか。常に実行する必要がある複数のタスクで使用します。
問題は、スクリプトを実行するたびにメモリ リソースを確認することです。値が高すぎる場合は、プロセスを停止してから、プロセスを再起動します。
このプロセスを使用して、処理するタスクのデータベース レコードを常にチェックしています。
やり過ぎかもしれませんが、検討する価値はあります。