-
PHP-Fcgi下PHP的履行时候设置办法
添加时间:2013-8-5 点击量:昨天,一个法度须要导出500条数据,成果发明到150条是,Nginx报出504 Gateway Timeout错误,本来PHP-Fcgi下的设置履行时候与isapi的不合
一般景象下设置PHP脚本履行超时的时候
一、在php.ini里面设置
max_execution_time = 1800;二、经由过程PHP的ini_set 函数设置
ini_set(max_execution_time, 1800);三、经由过程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;//by www.jbxue.com依然超时,可以断定set_time_limit这个函数没生效。
再查php-fcgi的设备php-fpm.conf,下边这个设置疑似有题目
<VALUE name=request_terminate_timeout>30s</VALUE>
查官方文档:http://php-fpm.org/wiki/Configuration_File
request_terminate_timeout - The timeout (in seconds) for serving a single request after which the worker process will be terminated. Should be used when max_execution_time ini option does not stop script execution for some reason. Default: 5s. Note: 0s means off
大意是php中set_time_limit设置的时候内若是php还没履行完,则走此处的设备,也就是request_terminate_timeout=30秒。
先把这个参数改的和php中set_time_limit值一样,都是300秒,还不可,不睬解为什么,若是高手知道请赐教。终极把request_terminate_timeout封闭,法度可以正常履行了,题目解决
<VALUE name=request_terminate_timeout>0s</VALUE>
补充:若是前端的nginx办事器应用了upstream负载均衡,那个负载均衡设备中以下几个参数也须要响应批改
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;