14400 レコードを生成してデータベースに追加するスクリプトを localhost (xampp) で実行する必要がありますmax_execution_time = 50000000000
。しかし、私は以前にこの max_execution_time を 50000000000 に設定してこのスクリプトを試しましたが、特定の時点で停止しました。他に何が実行時間を制限できるのかわかりません。これを何度も実行しており、待って失敗することにうんざりしています。このスクリプトを再度実行する前に、今度はジョブを終了するために変更する必要がありますか?
4 に答える
ゼロに設定する必要があります。ゼロは、スクリプトを永久に実行できることを意味します。スクリプトの先頭に次を追加します。
ini_set('max_execution_time', 0);
の PHP ドキュメントを参照してください。max_execution_time
ご了承ください:
set_time_limit(0);
同じ効果があります。
PHP のタイムアウトではなく、スクリプトへのアクセスに使用しているブラウザ (Firefox、Chrome など) のタイムアウトが原因で、スクリプトが停止している可能性があります。残念ながら、このタイムアウトを延長する簡単な方法はめったになく、ほとんどのブラウザではできません。ここでのオプションは、ターミナル経由でスクリプトにアクセスすることです。たとえば、Windows では、PHP 実行可能ファイルがパス変数にあることを確認してから、次を実行すると思います。
C:\path\to\script> php script.php
または、PHP CGI を使用している場合は、次のようになると思います。
C:\path\to\script> php-cgi script.php
ini_set('max_execution_time', 0);
さらに、他の人が言及したように、スクリプトにも設定します。この方法で PHP スクリプトを実行する場合、必要に応じて、バッファ フラッシュを使用して、スクリプトの進行状況を定期的にターミナルにエコーアウトできると確信しています。この方法で私が考える最大の問題は、PHP プロセスまたはサービス全体を停止する以外に、開始したスクリプトを停止する方法がまったくないことです。
@Peter Cullenの回答が言及しているように、スクリプトは最初にブラウザーのタイムアウトに遭遇します。したがって、ログ出力を提供することをお勧めしますflush()
が、接続にはバッファがあり、多くの出力が提供されない限り何も表示されません。信頼できるログを提供するのに役立つコード スニペットを次に示します。
set_time_limit(0);
...
print "log message";
print "<!--"; print str_repeat (' ', 4000); print "-->"; flush();
print "log message";
print "<!--"; print str_repeat (' ', 4000); print "-->"; flush();