2016-04-07 12 views
0

リモートホストからmysqlテーブルを取得してローカルデータベースに挿入するPHPスクリプトがあります。1分後に500のサーバーエラーが発生しました

無制限に実行するにはスクリプトが必要ですが、ちょうど60秒後に500のサーバーエラーが発生します。

私はそうのようなiniファイルVARS変更しようとしている:

ini_set('max_execution_time', 0); 
ini_set('max_input_time', -1); 
ini_set('default_socket_timeout', 15); 
ini_set('mysql.connect_timeout', 15); 
set_time_limit(0); 

もphp.iniでそれらを設定します。構成変数を印刷すると、これらの変更が有効になることがわかります。しかし、私のスクリプトは、実行の正確に60秒後に500を与え続けます。

私には何が欠けていますか?

EDIT

私がリンクされ、「複製」という質問で提案されているように、これは任意のサイズの制限を行うには何も持ってすることができます信じていません。これは、このスクリプトを実行しているときにデータベースで大きく異なる結果が発生し、時には100.000行を挿入し、300.000を挿入することがあり、毎回エラーがほぼ正確に60秒に表示されるためです。

データベーススクリプトを削除し、スリープ(70)だけを実行して上記の時間制限を確認したところ、スクリプトは60秒後でも500エラーを返します。

UPDATE

これは、私がスクリプトにブラウザをポイントし、それを実行した場合、それは60秒後に停止した奇妙です。しかし、エラーが出る前にブラウザを閉じると、スクリプトはサーバ上で実行され続けます。

+1

[PHPスクリプトの複製は360秒後に停止し、大きなファイルでは500のサーバーエラーが発生する](http://stackoverflow.com/questions/14601330/php-script-stops-after-360-seconds-and-shows -500-large-file-large-files) –

+0

リモートサーバーまたはローカルホストの設定を変更していますか?あなたがしようとしているものから、両方の設定を変更する必要があるためです。ただし、スクリプトを60秒以上実行しないように調整することもできます。 –

+1

コードを実行する前に 'sleep(50)'を実行しても、60秒後にエラーが発生するか、110秒後にエラーが発生しますか? – apokryfos

答えて

1

[OK]を、これは問題のこの同じ悪夢を得る他の誰かに役立つことを願っています。

この問題は、スクリプトを長時間実行していても出力がない場合に発生します。私はスクリプトが数秒ごとに何かを出力することを確認するだけで解決しました。私にとってそれはだった:

$counter = 0; 
while($continue === TRUE){ //The long loop 
    if($counter%1000==0) echo '.'; //write out a dot every 1000 iterations 
    $counter ++; 
    //Code... 
} 

私はここに私の問題にヒントを得た: https://serverfault.com/questions/277386/apache-2-2-cgi-timeout-configuration

これは、秒数のスクリプトからの出力がない場合はApacheによって推測されているかタイムアウトに関するものです(私にとっては60)。

これはおそらく上記のハッキングを行う必要がないように、いくつかの設定ファイルでこれを修正することができます。

関連する問題