PHP-Fcgi下PHP的执行时间设置方法

2015-01-24信息快讯网

昨天,一个程序需要导出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';

依然超时,可以确定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; 

PHP5中实现多态的两种方法实例分享
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
PHP正则提取不包含指定网址的图片地址的例子
phpmyadmin打开很慢的解决方法
PHP递归删除目录几个代码实例
php使用imagick模块实现图片缩放、裁剪、压缩示例
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
php环境套包 dedeampz 伪静态设置示例
php设置session值和cookies的学习示例
PHP使用imagick读取PDF生成png缩略图的两种方法
zf框架的registry(注册表)使用示例
php设置允许大文件上传示例代码
PHP加Nginx实现动态裁剪图片方案
php获取目标函数执行时间示例
设置php页面编码的两种方法示例介绍
php将session放入memcached的设置方法
PHP中执行MYSQL事务解决数据写入不完整等情况
php实现执行某一操作时弹出确认、取消对话框
linux实现php定时执行cron任务详解
PHP迭代器的内部执行过程详解
PHP中fwrite与file_put_contents性能测试代码
基于php中使用excel的简单介绍
PHP自动识别字符集并完成转码详解
PHP实现根据浏览器跳转不同语言页面代码
php实现查询百度google收录情况(示例代码)
浅析PHP Socket技术
深入Nginx + PHP 缓存详解
如何利用PHP执行.SQL文件
php记录代码执行时间(实现代码)
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
解决FastCGI 进程超过了配置的活动超时时限的问题
解析PHP的session过期设置
解析php中如何直接执行SHELL
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
基于PHP magic_quotes_gpc的使用方法详解
Function eregi is deprecated (解决方法)
PHP 使用header函数设置HTTP头的示例解析 表头
PHP之短标签开启设置
php错误级别的设置方法
VIM中设置php自动缩进为4个空格的方法详解
©2014-2024 dbsqp.com