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

一般情况下设置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-09-20 00:15:24

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

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 函数设置 s

PHP防盗链的基本思想 防盗链的设置方法_php技巧

盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率.受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益.做好防止盗链的工作,是每个网站开发者的重要工作. 做好防盗链工作能给网站服务器减少不少压力,这里我们分享一种php防盗链的实现方法: 一般的下载的步骤:查找->输出查找结果列表->进入软件详细页面->点击下载按钮->打开下载页面->

URL Rewrite的设置方法_php技巧

URL Rewrite需要服务器的支持!在启用此设置之前,请确保服务器上已作出了正确的设置,设置方法请参看下边的"Apache下的设置方法"和"IIS下的设置方法"!Apache下的设置方法 复制代码 代码如下: 打开 Apache 的配置文件 httpd.conf .  将#LoadModule rewrite_module modules/mod_rewrite前面的#去掉  在 httpd.conf中添加: <IfModule mod_rewrite.c

php遍历替换目录下文件指定内容的方法_php技巧

本文实例讲述了php遍历替换目录下文件指定内容的方法.分享给大家供大家参考,具体如下: 在php中目录访问需要遍历了然后文件需要一个个打开进行访问操作了,下面我们来看一段php 替换目录下文件指定内容,具体如下: /**************************** * 获取目录下的所有文件 * [$dir] 文件夹路径 ****************************/ function deepScanDir($dir) { $fileArr = array (); $dirA

php查找指定目录下指定大小文件的方法_php技巧

本文实例讲述了php查找指定目录下指定大小文件的方法.分享给大家供大家参考.具体实现方法如下: php查找文件大小的原理是遍历目录然后再利用filesize来计算文件大小,然后我们再加一判断就可以了,下面整理了一些例子. 我们先来看遍历目录,代码如下: 复制代码 代码如下: function tree($directory)  {   $mydir = dir($directory);   echo "<ul>n";   while($file = $mydir->r

PHP使用DirectoryIterator显示下拉文件列表的方法_php技巧

本文实例讲述了PHP使用DirectoryIterator显示下拉文件列表的方法.分享给大家供大家参考.具体分析如下: PHP中使用DirectoryIterator显示下拉文件列表,要遍历一个目录中的所有文件,我们可以使用DirectoryIterator,下面的例子演示了如何在页面中输出一个指定目录的文件列表 <?php echo "<select name='file'>\n"; foreach (new DirectoryIterator('c:\wamp\w

php计算函数执行时间的方法_php技巧

本文实例讲述了php计算函数执行时间的方法.分享给大家供大家参考.具体如下: 我们可以通过在程序的前后分别记录开始和结束时间,两个时间差就是程序的执行时间. <?php $long_str = "this is a test to see how much time md5 function takes to execute over this string"; // start timing from here $start = microtime(true); // func

php下防止单引号,双引号在接受页面转义的设置方法_php技巧

PHP页面中如果不希望出现以下情况: 单引号被转义为 \' 双引号被转义为 \" 那么可以进行如下设置以防止: 方法一:在PHP.ini中设置:magic_quotes_gpc = Off 方法二: $str=stripcslashes($str)

PHP Session变量不能传送到下一页的解决方法_php技巧

我认为,出现这个问题的原因有以下几点: 1.客户端禁用了cookie 2.浏览器出现问题,暂时无法存取cookie 3.php.ini中的session.use_trans_sid = 0或者编译时没有打开--enable-trans-sid选项 为什么会这样呢?下面我解释一下: Session储存于服务器端(默认以文件方式存储session),根据客户端提供的session id来得到用户的文件,取得变量的值,session id可以使用客户端的Cookie或者Http1.1协议的Query_