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 相关文章推荐
多文件上载系统完整版
Oct 09 PHP
Smarty模板快速入门
Jan 04 PHP
Windows下XDebug 手工配置与使用说明
Jul 11 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
PHP获取一年中每个星期的开始和结束日期的方法
Feb 12 PHP
PHPCMS忘记后台密码的解决办法
Oct 30 PHP
PHP 7.1新特性的汇总介绍
Dec 16 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
Oct 23 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 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
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
PHPStorm+XDebug进行调试图文教程
2016/06/13 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
php中namespace及use用法分析
2016/12/06 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
2010年最佳jQuery插件整理
2010/12/06 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
JavaScript实现实时更新系统时间的实例代码
2017/04/04 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
js数组去重的N种方法(小结)
2018/06/07 Javascript
详解基于Vue cli生成的Vue项目的webpack4升级
2018/06/19 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
2018/07/04 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
详解ES6中的Map与Set集合
2019/03/22 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
Python 3.6 性能测试框架Locust安装及使用方法(详解)
2017/10/11 Python
Python+PyQt5实现美剧爬虫可视工具的方法
2019/04/25 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
幸福家庭事迹材料
2014/02/03 职场文书
运动会加油稿100字
2014/09/19 职场文书
平安建设汇报材料
2014/12/29 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
浅谈Python项目的服务器部署
2021/04/25 Python
Python进度条的使用
2021/05/17 Python
Vue和Flask通信的实现
2021/05/19 Vue.js