通常は、PHPスクリプト実行のタイムアウトを設定します
1.php.iniに設定します
max_execution_time = 1800;
2. PHP の ini_set 関数を使用して設定します
ini_set("max_execution_time", "1800");
3. set_time_limit 関数を使用して設定します。
set_time_limit(1800);
PHP-FcgiでPHPの実行時間を設定する方法
昨日、プログラムは 500 個のデータをエクスポートする必要がありましたが、150 個のデータに達すると、Nginx が 504 Gateway Timeout エラーを報告することが判明しました。
観察の結果、約 30 秒でタイムアウトが発生し、php.ini の実行時間設定がすでに 300 秒になっていることがわかりました。
コードをコピーします
コードは次のとおりです:max_execution_time = 300
nginx の関連する設定をもう一度確認しますが、役に立ちません。
PHP テストページを作成して再度テストします
コードをコピー
コードは次のとおりです:echo 'aaa';
set_time_limit(0);
sleep(40);
echo 'aa';
それでもタイムアウトになってしまいますが、set_time_limit関数が有効になっていないと判断できます。
php-fcgiの設定php-fpm.confを再度確認してください
以下の設定に問題があるようです。
コードをコピーします
コードは次のとおりです:30s
公式ドキュメントを確認してください: http://php-fpm.org/wiki/Configuration_File
コードをコピー
コードは次のとおりです:request_terminate_timeout - 'max_execution_time' ini オプションが使用されない場合に、ワーカー プロセスが終了するまでの 1 つのリクエストを処理するためのタイムアウト (秒単位) を使用する必要があります。何らかの理由でスクリプトの実行を停止します。デフォルト:「5s」。注:「0s」は「オフ」を意味します。
一般的な考え方は、php の set_time_limit 設定内に php が実行されなかった場合、ここでの設定、つまり request_terminate_timeout=30 秒が使用されるということです。
まずこのパラメータを php の set_time_limit 値と同じに変更します。これでもまだ機能しません。理由がわかる方は教えてください。
最後に、request_terminate_timeoutがオフになり、プログラムが正常に実行できるようになり、問題は解決されました
コードをコピーします
コードは次のとおりです:
0s
追加: フロントエンド nginx サーバーがアップストリーム負荷分散を使用する場合、負荷分散設定の次のパラメーターもそれに応じて変更する必要があります
コードをコピーします
コードは次のとおりです:
proxy_send_timeout 300s;
http://www.bkjia.com/PHPjc/328087.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/328087.html
技術記事
通常の状況では、PHP スクリプトの実行タイムアウト時間を設定します。 1. php.ini で max_execution_time = 1800 を設定します。 2. PHP の ini_set 関数を使用して、ini_set("max_execution_time", "18...)" を設定します。