web-dev-qa-db-ja.com

スクリプトを無制限に実行します

Localhost(xampp)でスクリプトを実行して14400レコードを生成し、データベースに追加する必要があります。max_execution_time = 50000000000を設定しました。0または-1に設定して無制限にできるかどうかはわかりません。しかし、このスクリプトをmax_execution_timeで50000000000に試してみましたが、特定の時点で停止しました。他に何が実行時間を制限できるのかわかりません。このスクリプトを再度実行する前に、今度はジョブを完了するために変更する必要がありますか?

48
TooCooL

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

ini_set('max_execution_time', 0);

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

ご了承ください:

set_time_limit(0);

同じ効果があります。

125
hek2mgl

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

0
Peter Cullen