脚本宝典收集整理的这篇文章主要介绍了增加PHP-FPM空闲超时设置,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
foreach ($ITems as $item) { set_time_limit(30); PRoccessThatTakesAround2secs(); }
正常的PHP脚本时间限制也是30秒.之前工作正常,因为我们将每个项目的剩余时间限制重新设置为30秒.大约有1000个项目,这意味着该脚本通常需要大约30分钟才能完成.但是我们已经达到了以下问题:
现在我的问题是,将空闲超时增加到一个小时是否明智但是仍然确保PHP脚本运行时间不超过30秒,除非我们使用set_time_limit?有没有办法在每个脚本的基础上设置空闲超时(类似于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>
您看到的错误来自apache的fastcgi代理,该代理终止了与PHP-fpm池的连接,因为您的脚本在30秒内没有输出任何内容.
您可以在apache配置中更改idle-timeout以扩展它(不能为0):
FastCgiExternalServer /usr/lib/cgi-bin/PHP7-fcgi -socket /run/PHP/PHP7.0-fpm.sock -idle-timeout 1800 -pass-header Authorization
链是这样的:Apache – > FastCgiExternalServer代理 – > PHP-fpm pool server – > PHP进程
Apache代理会杀死与PHP的连接,因此从PHP设置max_execution_time或set_time_limit无关紧要.
AFaiK如果通过mod_fastcgi在Apache上运行PHP,则无法通过PHP代码或.user.ini或通过apache(.htaccess)设置每个脚本时间限制.这意味着通过在一个地方扩展它,你可以延长超时时间,例如.您的前端和后端用户.或者,您可以通过2个vhost分隔它,并在那里定义不同的超时值.
以上是脚本宝典为你收集整理的增加PHP-FPM空闲超时设置全部内容,希望文章能够帮你解决增加PHP-FPM空闲超时设置所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。