2

実行に時間がかかるスクリプトがあります。その結果、サーバーは 503 エラーで応答します。実行時間を長く設定するにはどうすればよいですか?

私のPHPスクリプトでは、次のように設定しました:

set_time_limit(0);
ignore_user_abort(true);
4

4 に答える 4

1

スクリプトで設定した時間制限に関係なく、クライアントが断念したか、中間のプロキシ サーバーが断念したか、または apache サーバーが断念するように構成されている場合、Web 要求がより早くタイムアウトする可能性があります。

他の回答者が述べたように; このmaximum_execution_time変数は役立つかもしれませんが、ビジターを長時間待たせたままにしない方がよいでしょう。

フィードバックを示すパターンの使用を検討してください。

  1. ユーザーがアクションを開始します。例: POST リクエスト
  2. PHP スクリプトは、javascript または iframe を含むページですぐに戻ります。
  3. javascript/内部フレームは長時間実行スクリプトを呼び出します。
  4. JavaScript は、LONGPOLL のようなメカニズムを使用して、スクリプトの進行状況を数秒ごとにユーザーに更新します。
  5. 完了またはエラーが発生すると、javascript が通知し、次のページにリダイレクトします。
于 2011-11-20T14:15:15.867 に答える
1

この質問はPHP バックグラウンド プロセスとよく似ています。それを読んでください。加えて、

まず、php.ini で時間制限を変更する必要があります。スクリプト自体で変更することはできません。または .htaccess でphp_value

次に、ページが更新を使用するように、ユーザーとのやり取りをよりフレンドリーにする方法を変更したい場合があります。ajax を調べることができます。http-リフレッシュ; さまざまなアプローチのマルチパート ページ。長い計算を行っている場合は、バックグラウンドでそれらを起動してデータベースを更新し、後で結果を取得できます。

于 2011-11-20T14:18:46.757 に答える
0

正確なエラーがわかりませんか?それがなければ、私の推測はメモリ制限です、あなたもそれを変更しましたか?php.iniを確認してください。

memory_limit = 128M
于 2011-11-20T14:08:43.487 に答える
0

maximum_execution_timeを見てください。

ただし、私の知る限り、これは通常 php.ini で設定する必要があります。マニュアルを簡単に見ると、セーフモードでない場合はスクリプトで設定できるはずです。

于 2011-11-20T14:04:49.380 に答える