回答:
php-fpmのタイムアウトを設定する方法はいくつかあります。で/etc/php5/fpm/pool.d/www.conf
、私の行を追加しました:
request_terminate_timeout = 180
また、/etc/nginx/sites-available/default
問題のサーバーのロケーションブロックに次の行を追加しました。
fastcgi_read_timeout 180;
ロケーションブロック全体は次のようになります。
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 180;
include fastcgi_params;
}
今度はphp-fpmとnginxを再起動するだけで、180秒未満のリクエストのタイムアウトはなくなります。
fastcgi_read_timeout
そのlocation
ブロックで何を設定しても、60秒後にタイムアウトします。
location
は、docrootではなく、phpスクリプトを処理するブロックでこれを設定する必要があります。
このリンクを試してください。これを修正する方法についてのより良い解決策があります。したがって、手順は次のとおりです。
nginx.conf
あるファイルを開きます/etc/nginx
。http {
セクションの下に以下のコードを追加します。
client_header_timeout 3000;
client_body_timeout 3000;
fastcgi_read_timeout 3000;
client_max_body_size 32m;
fastcgi_buffers 8 128k;
fastcgi_buffer_size 128k;
注:すでに存在する場合は、それに応じて値を変更します。
Nginxとphp5-fpmをリロードします。
$ service nginx reload
$ service php5-fpm reload
エラーが解決しない場合は、値を増やすことを検討してください。
/etc/nginx/sites-available/mysite.com
。
PHPを使用して、nginxによって発行されるタイムアウトを防ぐことはできません。
より多くの時間を許可するようにnginxを構成するには、proxy_read_timeout
ディレクティブを参照してください。
このような場合に発生する可能性のあるタイムアウトには3種類あります。各回答は、これらの可能性の1つの側面のみに焦点を当てていることがわかります。だから、私はそれを書き留めて、将来ここにアクセスする誰かがランダムに各回答をチェックして、どちらがうまくいったかを知らずに成功する必要がないようにすることを考えました。
したがって、各問題の修正は次のとおりです。
$.ajax({
url: "test.html",
error: function(){
// will fire when timeout is reached
},
success: function(){
//do something
},
timeout: 3000 // sets timeout to 3 seconds
});
nginxクライアントのタイムアウト
http{
#in seconds
fastcgi_read_timeout 600;
client_header_timeout 600;
client_body_timeout 600;
}
nginxプロキシサーバーのタイムアウト
http{
#Time to wait for the replying server
proxy_read_timeout 600s;
}
必要なものを使用してください。場合によっては、これらすべての構成が必要になることがあります。必要だった。
に追加のnginxディレクティブ(のngx_http_proxy_module
)を追加する必要がありますnginx.conf
。例:
proxy_read_timeout 300;
基本的に、nginx proxy_read_timeout
ディレクティブはプロキシのタイムアウトを変更します。これFcgidIOTimeout
は、静かすぎるスクリプト用です。FcgidBusyTimeout
実行に時間がかかりすぎるスクリプト用です。
また、FastCGIアプリケーションを使用している場合は、これらのオプションも増やします。
FcgidBusyTimeout 300
FcgidIOTimeout 250
次に、nginxとPHP5-FPMをリロードします。
Pleskでは、追加のnginxディレクティブの下のWebサーバー設定に追加できます。。
FastCGIの場合は、HTTPの追加ディレクティブの下のWebサーバー設定で確認します。。
FcgidBusyTimeout
変数はApacheだけに存在しませんか?
使用する set_time_limit(0)
PHP-FPMまたは類似のプロセスマネージャを使用するときに無駄です。
を使用するset_time_limit
場合php-fpm
、ボトムラインは使用しません。実行タイムアウトを増やすには、このチュートリアルを確認してください。
この問題はconfig APACHEで解決します!(このトピックの)すべての方法は私にとって正しくありません...それから私はchanche apache configを試します:
Timeout 3600
その後、私のスクリプトはうまくいきました!