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


Posted in PHP onAugust 02, 2013

一般情况下设置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;
PHP 相关文章推荐
php基础知识:控制结构
Dec 13 PHP
php 常用字符串函数总结
Mar 15 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
May 04 PHP
sphinx增量索引的一个问题
Jun 14 PHP
php使用ICQ网关发送手机短信
Oct 30 PHP
二进制交叉权限微型php类分享
Feb 07 PHP
php获取网站百度快照日期的方法
Jul 29 PHP
php ci 获取表单中多个同名input元素值的代码
Mar 25 PHP
php mysql实现mysql_select_db选择数据库
Dec 30 PHP
如何离线执行php任务
Feb 21 PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
基于php中使用excel的简单介绍
Aug 02 #PHP
PHP自动识别字符集并完成转码详解
Aug 02 #PHP
PHP实现根据浏览器跳转不同语言页面代码
Aug 02 #PHP
php实现查询百度google收录情况(示例代码)
Aug 02 #PHP
浅析PHP Socket技术
Aug 02 #PHP
php中如何防止表单的重复提交
Aug 02 #PHP
浅析51个PHP处理字符串的函数
Aug 02 #PHP
You might like
一个ubbcode的函数,速度很快.
2006/10/09 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
php异常处理使用示例
2014/02/25 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
PHP和C#可共用的可逆加密算法详解
2015/10/26 PHP
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
JSONP基础知识详解
2017/03/19 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
[58:58]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第二场
2018/04/05 DOTA
Python中字符串对齐方法介绍
2015/05/21 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
简单了解Python变量作用域正确使用方法
2020/06/12 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
电子商务个人自荐信
2013/12/12 职场文书
古汉语文学求职信范文
2014/03/16 职场文书
食品采购员岗位职责
2014/04/14 职场文书
产品售后服务承诺书
2014/05/21 职场文书
素质教育标语
2014/06/27 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
2014年领导班子工作总结
2014/12/11 职场文书
实习感想范文
2015/08/10 职场文书
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python
JS 基本概念详细介绍
2021/10/16 Javascript