PHPでは、ループの各反復にいくつかの2番目の遅延を配置します。
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)。その後、データベースのそのフィールドをチェックするスクリプトを作成できます。
スレッドを3秒間スリープさせるsleep(3)
を使用できます。
Correctionsleepメソッド phpは秒単位 。
うさぎは、しばらくの間phpスクリプトをスリープさせる2つの方法です。コードがあり、スクリプトの動作を一時停止する場合は、これらの関数を使用します。これらの例では、tコードの最初の部分はスクリプトの実行時に行われ、コードの2番目の部分が行われますが、時間遅延があります。
例:
echo "Message 1";
// The first part of code.
$timeInSeconds = 3;
sleep($timeInSeconds);
// The second part of code.
echo "Message 2";
これにより、phpスクリプトを3秒間スリープさせることができます。この関数を使用すると、スクリプトを整数(整数)秒だけスリープさせることができます。
例:
echo "Message 1";
// The first part of code.
$timeInMicroSeconds = 2487147;
usleep($timeInMicroSeconds);
// The second part of code.
echo "Message 2";
秒(浮動)よりも小さい時間値でphpをスリープさせたい場合、この関数を使用できます。この例では、スクリプトを2.487147秒間スリープさせました。
PHP supervisorD を使用したデーモンスクリプトを使用することを検討しましたか。常に実行する必要がある複数のタスクで使用します。
問題は、スクリプトを実行するたびにメモリリソースを確認することです。高すぎる場合は、プロセスを停止してから再起動します。
このプロセスを使用して、処理するタスクのデータベースレコードを常にチェックしています。
やり過ぎかもしれませんが、検討する価値があります。