2011-11-15 15 views
0

インポートの60秒後にタイムアウトするcsvインポート関数を変更しようとしています。すべての行について、サイズ変更されたイメージと他のコードが実行されます。csvタイムアウトの問題をインポートする

私は別のCSVプログラムを実行する同じサーバー上の別のWebサイトを持っているが、同じことを行うので、vpsはこれを処理できますが、バッチで処理できることがわかります。そのプログラムは8000行を読み込み、画像のサイズを変更することもできます。設定は10行あり、3秒待って、繰り返します。私が提起

セッティング:

  • をset_time_limit
  • max_execution_timeに
  • ブラウザHTTP、私はすべての10行目のための睡眠を()試してみましたが、これが唯一の可能

キープアライブタイムアウトプロセスが少ない行をインポートする

スクリプトは、ファイルをループする方法

です

for ($current_line = 0; $line = fgetcsv($handle, MAX_LINE_SIZE, Tools::getValue('separator')); $current_line++) 
{ 
//code here 
} 

サーバー:

  • アパッチ
  • PHP 5.3.3
  • MYSQL
  • ニスキャッシュ

この作業を行うには何ができますか?

+0

質問を更新し、コマンドラインからスクリプトの実行の詳細を追加してください。 –

答えて

1

スクリプトがタイムアウトしたときに最初に試すのは、php-cliを使用して実行することです。コマンドラインで実行されるスクリプトには実行時限がありません。

これで問題が解決しない場合は、実行期限ではないことがわかります。

もう1つの試みは、memory_get_usage()からの定期的なステータスメッセージを印刷して、スクリプトのクラッシュの原因としてメモリリークを排除できるようにすることです。これは、あなたのスクリプトが何らかの入力で死ぬかどうかを特定するのに役立ちます。

+0

私はmemory_get_usage()ですべての行にfile_put_contents()を行い、使用量は8.25 mb〜8.75mbでした。 私はコマンドラインのインポートを実行できませんでした。私は2時間試してから諦めました。 – Ivar

0

デフォルトのタイムアウト時間を上書きすることができます。 set_time_limit(0);

sleepを使用すると、スクリプトの読み込みが少なくなりますが、基本的にスクリプトは60秒以上かかるためタイムアウトしています。睡眠を増やすことで、60秒でそれほど効果が得られなくなります。

これは重要なスクリプトであれば、これをもっと速く実行できる別のプログラミング言語に移行することを検討したいと思います。その1つだけ、またはミッションクリティカルではない場合は、タイムアウトしないようにset_time_limit(0)を試してください。また、ブラウザにphp scriptnameを入力して、コマンドラインでスクリプトを実行してみてください。

0

ブラウザに何かを出力して、ブラウザを有効にしてみてください。非アクティブFFが3分の場合、IEは1分後にタイムアウトします。

<? 
if((($current_line % 10) == 0) && ($current_line != 0)) 
{ 
    sleep(3); 
    echo '. '; 
} 
?> 
関連する問題