ホームページ > バックエンド開発 > PHPチュートリアル > PHP-Fcgi_PHP チュートリアルで PHP の実行時間を設定する方法

PHP-Fcgi_PHP チュートリアルで PHP の実行時間を設定する方法

WBOY
リリース: 2016-07-21 15:00:08
オリジナル
1050 人が閲覧しました

通常は、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

tru​​e
http://www.bkjia.com/PHPjc/328087.html

技術記事

)" を設定します。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート