PHPファイルの実行に30秒以上かかるファイルに問題があります。
検索後、コードの先頭にset_time_limit(0);
を追加しましたが、30秒後に500 error
でファイルがタイムアウトします。
log: PHP Fatal error: Maximum execution time of 30 seconds exceeded in /xxx/xx/xxx.php
safe-mode : off
Php.iniを確認してください
ini_set('max_execution_time', 300); //300 seconds = 5 minutes
ini_set('max_execution_time', 0); //0=NOLIMIT
これは古いスレッドですが、この問題についてかなり助けになったので、これを link に投稿すると思いました。基本的に、サーバーの構成はphpの構成をオーバーライドできます。記事から:
たとえば、mod_fastcgiには、スクリプトのアイドル時間を制御する「-idle-timeout」というオプションがあります。そのため、スクリプトがその数秒間fastcgiハンドラーに何も出力しない場合、fastcgiはそれを終了します。セットアップは次のようになります。
Apache <-> mod_fastcgi <-> php processes
この記事には他の例と詳細な説明があります。これが他の誰かに役立つことを願っています。
通常、メインループ内でset_time_limit(30)を使用します(したがって、各ループの反復はスクリプト全体ではなく30秒に制限されます)。
複数のデータベース更新スクリプトでこれを実行しますが、これは完了するのに数分かかりますが、各反復に1秒未満です-30秒の制限を維持することは、スクリプトを作成するのに十分な愚かさがある場合、スクリプトが無限ループに陥らないことを意味します。
制限に対する30秒の選択は多少somewhat意的であることを認めなければなりません-私のスクリプトは代わりに2秒で実際に逃げることができますが、実際のアプリケーションを考えると30秒でより快適に感じます-もちろん、あなたが感じるどんな値でも使用できます適切です。
お役に立てれば!
ini_set('max_execution_time', 300);
これを使って
これをチェックアウトしてください。これは PHP MANUAL からのものです。これが役立つ場合があります。
PHP_CLI SAPIを使用していて、「N秒の最大実行時間を超えました」というエラーが発生した場合(Nは整数値)、M秒ごとまたは反復ごとにset_time_limit(0)を呼び出してみてください。例えば:
<?php
require_once('db.php');
$stmt = $db->query($sql);
while ($row = $stmt->fetchRow()) {
set_time_limit(0);
// your code here
}
?>