0

たくさんのRSSフィードを取得するPHPスクリプトがあります。パブリッシャーのサーバーの過負荷を防ぐために、PHPスリープ関数を使用して処理を遅くしています。

スクリプト全体が数時間続く可能性があります。

GoDaddyのCronジョブからこれを実行すると、5〜10分間正常に動作し、サーバーエラーが返されます。確認したところ、PHPの最大実行時間は30秒なので、これが問題の原因かどうかはわかりません。

Macでジョブを実行する場合、ローカルPHPのデフォルトの最大実行時間も30秒ですが、このスクリプトはターミナルから実行すると機能しますが、その理由はわかりません。

信頼性の問題に遭遇することなく、30秒を超えるスクリプトをループするにはどうすればよいですか?

感謝します。

4

1 に答える 1

2

短い答えはset_time_limit(0)、長時間実行されるスクリプトを可能にするために使用されます。ターミナル(CLI)PHPではおそらく0に設定されています。特にPHP 5.2以前では、メモリが不足している可能性があります。すべてのエラーをファイルに記録し、それを調べます。

プログラムを書き直して、1回の実行でデータのサブセットを処理できるようにすることができます。このアプローチの利点は、PHP環境がサポートするものに応じて、24時間年中無休で実行することも5分ごとに実行することもできることです。一度に複数のインスタンスを実行し、それぞれが独自のデータを処理することもできます。

于 2012-07-07T21:01:33.967 に答える