2016-05-22 6 views
0

現在、リモートサーバ上のcsvファイルにアクセスしてデータを処理し、ローカルMySQLデータベースにデータを書き込むphpスクリプトを作成しています。処理してデータベースに挿入するデータ(50,000行)が非常に多いため、スクリプトの実行には60秒以上かかります。私が持っている問題は、スクリプトは60秒後にタイムアウトします。60秒後にPHPスクリプトのタイムアウトが発生する

MySQLの問題ではないことを確認するために、私は無限ループを入力する別のスクリプトを作成しました。また、60秒でタイムアウトします。

Iが増加/ Ubuntuのサーバー上で以下の設定を変更しようとしたが、それはを助けていないた: max_execution_timeに max_input_time mysql.connect_timeout apache2.confファイル内 default_socket_timeoutタイムアウト値。

ウェブブラウザからPHPファイルにアクセスしている可能性がありますか? Webブラウザにタイムアウト制限がありますか?

ご協力いただければ幸いです。

+0

はアップ –

+0

コンテンツの品質を持ち上げるために有用であろう(http://stackoverflow.com/help)この[URL]を確認してください。** UPDATE:**私は、データベースを更新するためのスクリプトを実行し、PHP * * 60秒後にゲートウェイのタイムアウトが発生しても、実際には完了しています(つまり、すべての行がDBに追加されます)。ゲートウェイのタイムアウト・エラーが表示された後、phpMyAdminページのいくつかのクイック・リフレッシュによって、データベース内の行数が増え続けるため、PHPスクリプトがまだ実行中であることが示されます。確かにこれはPHPで問題ではないということですか? –

答えて

0

を探します。問題は仮想サーバーのホスティングがあることにあります。

Webブラウザからの要求がホスティングサーバに送信され、要求を仮想サーバに送信します(別のサーバのように動作します)。ホスティングサーバーは60秒後に仮想サーバーからの応答を返さないため、タイムアウトして、正確にこれを示すWebブラウザに応答を返します。一方、仮想サーバーはまだスクリプトを処理しています。

仮想サーバーが最終的にスクリプトの処理を終了すると、ホスティングサーバーがすでにフロントエンドユーザにタイムアウトエラーを返したように、それは遅すぎます。

ホストするサーバーは、(複数の異なるユーザのための)多数の仮想サーバーをホストするために使用されているので、このサーバー上のタイムアウト設定を変更することは一般に不可能です。

ので、最終評決:タイムアウトエラーは、仮想ホスティングで回避することはできません。これが深刻な問題である場合は、専用のサーバーホスティングを取得する必要があります。

0

マイケル、

あなたの問題は、それをアクセスするWebブラウザをPHPファイルから来てはいけません。

PHPファイルの先頭に次の行を挿入してみましたか?

set_time_limit(0); 
ini_set ('max_execution_time', 0); 

PHPをコマンドラインでスクリプトを実行するとき、あなたはタイムアウトを持っていない理由を説明する2つのコンフィギュレーションファイルは、Apache用とCLIのための1つを、持っています。あなたが私に与えたphpinfoは、max_execution_time = 6000です。

set time limit documentationを参照してください。

+0

はい私は成功したset_time_limit()を試しました。 –

+0

phpinfo.phpという新しいページを作成し、<?php phpinfo(); ?>を入力し、結果を貼り付けます。 – TheWalkingPanda

+0

[HTML出力へのリンク(https://www.dropbox.com/s/vwes4x5fdw24qvn/phpinfo%28%29.html?dl=0) ここで別のスクリプトにするphpinfoからの出力は、()です。 –

1

この制限を乗り越える最も簡単で難易度の低い方法は、この行をスクリプトに追加することです。その後

あなただけが修正しようとしていたとき、あなたは2つのPHP.INIファイル

ini_set ('max_execution_time', -1); 

のいずれかを修正した場合のケースとなり、このスクリプトの実行時間ではなく、すべてのPHPスクリプトを修正していますphp.iniファイル私はあなたが間違ったものを修正していたと思います.2つは、PHPのCLIだけで使用され、もう1つはApacheで動作するPHPで使用されています。 PHP-apacheのが使用する実際のファイルを見つけるために、将来の参考のために

はちょうど

<?php 
phpinfo(); 
?> 

を行うと、私は最終的に要求がタイムアウト理由を働いLoaded Configuration File

+0

提案に感謝しますが、max_execution_timeを変更しても役立たない。前述のように、私はすでに元の投稿に記載されているさまざまなタイムアウト変数を変更しようとしました。私はphpinfo()を実行するときにそれらが正常に変更されていると信じています。すべての値が更新されます。 –

+0

スクリプトをコマンドラインから実行することは可能ですか? CLI – RiggsFolly

+0

を使用して実行する場合は制限が、私は、コマンドラインからスクリプトを実行する場合、私はもはや正しい方向への一歩であるタイムアウトを取得していない – RiggsFolly