63

14400 レコードを生成してデータベースに追加するスクリプトを localhost (xampp) で実行する必要がありますmax_execution_time = 50000000000。しかし、私は以前にこの max_execution_time を 50000000000 に設定してこのスクリプトを試しましたが、特定の時点で停止しました。他に何が実行時間を制限できるのかわかりません。これを何度も実行しており、待って失敗することにうんざりしています。このスクリプトを再度実行する前に、今度はジョブを終了するために変更する必要がありますか?

4

4 に答える 4

168

ゼロに設定する必要があります。ゼロは、スクリプトを永久に実行できることを意味します。スクリプトの先頭に次を追加します。

ini_set('max_execution_time', 0);

の PHP ドキュメントを参照してください。max_execution_time

ご了承ください:

set_time_limit(0);

同じ効果があります。

于 2013-04-02T23:42:58.897 に答える
2

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 プロセスまたはサービス全体を停止する以外に、開始したスクリプトを停止する方法がまったくないことです。

于 2017-12-02T05:50:43.357 に答える
0

@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();
于 2020-09-15T14:03:44.117 に答える