最近、PHP-FPMに移行しました。しかし、長時間実行されているスクリプトでは問題が発生しました。コードはおおよそ次のようになります。PHP-FPMのアイドルタイムアウト設定を増やす
foreach ($items as $item) {
set_time_limit(30);
proccessThatTakesAround2secs();
}
通常のPHPスクリプトの制限時間も30秒です。以前は、残りの時間制限を各項目ごとに30秒に戻していたため、以前は問題なく機能していました。約1000項目があります。つまり、スクリプトの作成には通常、約30分かかります。
しかし私たちは、以来、次のような問題に達していますのFastCGI:サーバーとのCOMM "/usr/local/php-5.6.24/sbin/php5-fpm" 中止さ:アイドルタイムアウト(30秒)
今私の質問は、アイドルタイムアウトを1時間のようなものに増やすことは賢明ですが、set_time_limit
を使用しない限り、PHPスクリプトが30秒以上実行されないようにしていますか?スクリプトごとにアイドルタイムアウトを設定するには、そこに方法は(?set_time_limit
に似て何か)である
ここに私たちのプールの構成は次のとおりです。
[www]
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = static
pm.max_children = 55
pm.max_requests = 10000
php_value[memory_limit] = 128M
php_value[max_execution_time] = 30
php_value[upload_max_filesize] = 20M
php_value[post_max_size] = 20M
php_value[max_input_vars] = 9999
そしてここでは、私たちのfastcgi.confは
<IfModule mod_fastcgi.c>
AddType application/x-httpd-fastphp5 .php
Action application/x-httpd-fastphp5 /php5-fcgi
Alias /php5-fcgi /usr/local/php-5.6.24/sbin/php5-fpm
FastCgiExternalServer /usr/local/php-5.6.24/sbin/php5-fpm -socket /var/run/php5-fpm.sock -idle-timeout 30 -pass-header Authorization
<Directory /usr/local/php-5.6.24/sbin/>
Require all granted
</Directory>
</IfModule>
です
mod_fastcgiに関するあなたのコメントに関しては、どこにでも時間制限を長くしてから、set_time_limit()を使用してアプリケーションの制限時間を短く設定することができます。 –
@FrankForte afaik - この場合、サーバー設定がアプリケーション設定よりも優先されます。サーバーは接続を切断します。 – seven
例:600秒のタイムアウト、30秒のアプリケーション設定、または300秒のタイムアウトに設定されたサーバー - アプリケーションのタイムアウトがサーバーより短い間は、アプリケーションのタイムアウトが最初にトリガーされると考えられますPHPが終了する前の最終的なクリーンアップ)。 –