2012-03-20 10 views
0

SOAPを介してWebサービスに接続するスクリプトを毎晩実行する必要があります。最大45000レコードが返されます。複数の段階でスクリプトを自動化する

返されるレコードの数を設定できます。max_execution_timeの制限に達する前に、制限は1000と思われます。

すべての45000レコードを取得するためにこのスクリプトを自動化するにはどうすればよいでしょうか?確かに45 cronの仕事をするよりも良い方法がありますか?

+0

そのスクリプトの 'max_execution_time'を増やすことができます。 – Josh

+0

は、デフォルトの30秒をはるかに超え、memory_limitを使い果たします。私はばかげたレベルにこれらの設定を私に必要としない答えを見つけようとしています – user813720

+0

コマンドラインPHPは、通常、制限時間が無効になっています。スクリプトをブラウザで実行しないでください。ネットワークが故障したり、ESCキーを押したりすると、ブラウザが接続を切断し、スクリプトがシャットダウンされます。 –

答えて

1

あなたは、これが毎晩自動的に実行したい場合は、単一cronジョブは間違いなく行く方法であるのを助ける必要があります。これには2つの基本的なアプローチがあります。問合せ後に問合せを実行するジョブを1回実行し、x個のレコードを毎回取得し、すべてのレコードを取得するまで、または何度も繰り返し実行するか数分ごとに毎回x個のレコードを取得します。どちらも長所と短所を持っていますが、最初の選択肢はおそらく実装が簡単です。

これを行うには、set_time_limit()を使用して期限を引き上げることをおすすめします。プロセスが完了するまでの時間が非常に長くなるように、または制限がない場合は0にする必要があります。あなたもメモリの問題がある場合は、私は毎回ずっと少なくするだろう。最大値が1000であれば、500とします。完了するまで、一度に500レコードを繰り返しループさせます。 sleep()を使用して、各レコードプルの間に小さな遅延を入れたい場合もあります。

関連する問題