1

CURL によって相互にリンクされた複数の php ファイルを含む複雑なプロジェクトをテストしています。メイン関数を 15 回実行します。4回しか実行されず、文句を言いMaximum execution time of 30 seconds exceededます。データベースを見ると、実行するたびに操作が正確に4 回実行されていることがわかります。どうなり得るか?エラーは、他のphpファイルを呼び出している行に表示されます$data = curl_exec($ch);

4

4 に答える 4

0

php.inimax_execution_timeの設定を参照して調整してください。120240それでも意味があり問題ありませんが、0この制限を無効にするために に設定する誘惑に駆られないでください。代わりに、スクリプトを修正して、リモート ファイルをキャッシュし、常にフェッチしないようにします。一般的に、あなたのデザインは壊れていると思います。cURL 経由でスクリプトを接続すると、API が必要か、その他の設計上の問題があることがわかります

于 2012-11-21T21:46:00.467 に答える
0

複数のページをリクエストする必要がある場合は、curl_multi_* で同時に (並行して) 行うことができます。

于 2012-11-24T09:47:37.343 に答える
0

他の誰かがすでに最大実行時間をカバーしているので、一般的な考え:

  • 不必要にループしていないことを確認してください。ループが終わったら、それを「中断」します。複数の反復も中断できることを忘れないでください。
  • 私はこれを試したことはありません (純粋に考えているだけです) が、実行の最後に Ajax 呼び出しを使用して次の実行を開始するにはどうすればよいでしょうか? 新しいリクエストを作成しているため、実行中のタイマーが最初からやり直されるに違いありません。
于 2012-11-21T21:50:27.017 に答える
0

PHP 関数の開始点で、この関数の実行時間制限を設定します。制限なしの場合は 0 を設定します。

function doWork() {
    set_time_limit(0);
    /* do your work here */
}

curl で設定された制限時間:

curl_setopt($ch, CURLOPT_TIMEOUT, 400);
于 2012-11-22T14:57:49.510 に答える