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

昨天,一个程序需要导出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; 
时间: 2024-10-10 07:59:13

PHP-Fcgi下PHP的执行时间设置方法的相关文章

Linux下终端字体颜色设置方法

颜色=\033[代码;前景;背景m 如:\033[1;32;40m表示高亮显示字体为绿色,背景色为黑色 颜色=\[\033[代码;前景;背景m\] echo -e "this is a \033[5;1;42m abc \033[0m" 前景            背景             颜色 --------------------------------------- 30               40              黑色 31               4

Ubuntu下VSFTPD(五)(匿名FTP设置方法)

匿名FTP设置方法: 通常在登录FTP服务器的用户不确定的情况下,应将FTP服务器设置为允许匿名账号登录的FTP服务器 1.启用匿名帐号   anonymous_enable=YES   local_enable=YES   write_enable=YES   listen=YES 设置完成后,重启vsftd.将允许匿名账号和本地账号登录FTP服务器,同时允许匿名用户具有对FTP服务器文件的写权限,并且只能下载文件而不能上传,不允许匿名账号创建文件夹,匿名用户的口令为一个E-mail地址. 2

Linux下 环境变量设置方法

etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. /etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量. ~/.profile:在登录时用到的第三个文件是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.

linux下通过iptables只允许指定ip地址访问指定端口的设置方法

这篇文章主要介绍了linux下通过iptables只允许指定ip地址访问指定端口的设置方法,需要的朋友可以参考下. 首先,清除所有预设置 iptables -F#清除预设表filter中的所有规则链的规则 iptables -X#清除预设表filter中使用者自定链中的规则 其次,设置只允许指定ip地址访问指定端口 其次,设置只允许指定ip地址访问指定端口 iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 22 -j ACCEPT iptab

IIS下不能下载文件的docx文档,XLSX文档的设置方法(转)

IIS下不能下载文件的docx文档,XLSX文档的设置方法 Office 2007的的界面风格默认格式中都是.DOCX,XLSX,PPTX等等后缀,连结中包含此类文件时,界面风格默认什么打不开的其实只要在IIS中的MIME的类型中添加对此格式的支持就可以了下面提供两种方法扩展功能,推荐使用第二种. 方法一:打开网站属性,的HTTP头选项对话牌,添加的MIME类型 新建一种类型,填入需要的 .docx ,类型为 application/vnd.openxmlformats-officedocume

Win7/Win2008下IIS配置Asp站点启用父路径的设置方法(已解决)

在Win7/Win2008下IIS配置Asp站点启用父路径的设置方法与win2003下不同,看看下图就知道了! Win7/Win2008下IIS配置Asp站点启用父路径的设置方法(已解决)

linux系统(ubuntu)下使用ssr上网的方法之一:设置代理

前因: 1.最近因为工作的原因,需要在linux系统下开发. 2.开发环境需要一个SSR 过程: 之前的工作环境(windows)里已经有一个SSR客户端,本来是打算在linux里也装一个,后来觉得麻烦.就用局域网代理的方法来做了:(注意,此方法使用前提是,请先准备一个可以允许局域网放问的SSR客户端) 方法1.在计算机里搜索 全部设置->网络->网络代理 ,在这里设置. 方法2. 在全局环境变量 $ sudo vi /etc/environment 里增加: http_proxy="

Windows下,通过程序设置全屏抗锯齿(多重采样)的方法

这里说的全屏抗锯齿,不是基于着色器的FXAA之类的方式,而是兼容性更好的,基于固定管线的多重采样方式. 先来说一下开发环境,我用的是VC2013+GLEW1.11. 要通过程序设置多重采样,首先需要进入控制面板,确定抗锯齿的设置是“根据应用程序而定” ,当然,这个设置的具体名称,不同的显卡厂商有不同的叫法. 接下来,就是重点了. Windows下要通过程序设置多重采样,必须使用wglChoosePixelFormatARB这个函数.目前网上基本都是自己去获取这个函数的接口地址,其实根本不用这么麻

Vmware下Ubuntu 14.04静态IP地址的设置方法

一.环境 宿主机 Win 8.1 虚拟机工具 VMware 10.0 虚拟主机系统 Ubuntu 14.04 二.说明 这里需要注意的是:VMware对于VMnet8采用如下规则(192.168.174.0网段为例): 第一个地址(192.168.174.1):静态地址,分配给宿主机的VMware Network Adapter VMnet8适配器使用: 第二个地址(192.168.174.2):静态地址,分配给NAT设备使用: 192.168.174.3 - 192.168.174.127:静