今日、プログラムが Excel エクスポート タスクを実行しているときに、nginx タイムアウト プロンプトが表示されました
nginx 504 ゲートウェイのタイムアウト
トラブルシューティングのプロセス:
タスクを表示すると、内容が 20,000 件の情報のデータ量であることがわかります。この問題は、Excel にエクスポートするときに発生しました。
タイムアウトが発生するまでの実行時間は約10分です分析:
Nginx 504 Gateway Timeout は、要求されたゲートウェイが要求されていないことを意味します。簡単に言えば、実行可能な PHP-CGI が要求されていないことを意味します。 通常、次の状況でこの問題が発生します:
1. プログラムが大量のデータを処理している、または無限ループなどの問題がある
2. データベースなどの接続を作成するときに、何らかの理由で接続できず、タイムアウト障害のメカニズムがないため、常に接続が作成されます
3. プログラム内にいくつかの http リクエストがあり、これらのリクエストの実行時間が長すぎてタイムアウトになります
タイムアウトの特定のパラメーターを表示するには、nginx と php の関連する設定をそれぞれ確認してください
nginx設定ファイルを見つける
リーリーここで最も重要な設定は最初の 3 つです。
リーリーphp設定ファイル
リーリー上記の設定を変更した後、再度実行したところ、504 タイムアウト プロンプトは表示されませんでしたが、ページは空白で、ファイルはエクスポートされませんでした。実行中にphpがタイムアウトするはずです
まさか、PHP コードをチェックしたところ、実行時間の設定が見つかりませんでした:
set_time_limitBaidu は php 関数の実行時間を検索し、次のことを発見しました:
制限時間の設定
この関数は、ページの最長実行時間を設定するために使用されます。デフォルト値は 30 秒で、php.ini の max_execution_time 変数で設定されています。0 に設定されている場合、最大時間は制限されません。
この関数を実行すると計算が開始されます。たとえば、デフォルトが 30 秒で、この関数が実行される前に 25 秒が実行されており、この関数を使用してそれを 20 秒に変更すると、ページの最大実行時間は 45 秒になります。
最後にphp関数に次の行を追加しました:
set_time_limit(0);
再度実行すると結果はOKです。
http://www.bkjia.com/PHPjc/1116072.html
。