php

位置:IT落伍者 >> php >> 浏览文章

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


发布日期:2020年04月18日
 
PHP-Fcgi下PHP的执行时间设置方法
昨天一个程序需要导出条数据结果发现到条是Nginx报出 Gateway Timeout错误原来PHPFcgi下的设置执行时间与isapi的不同

一般情况下设置PHP脚本执行超时的时间

在phpini里面设置

max_execution_time = ;
通过PHP的ini_set 函数设置

ini_set("max_execution_time" "");
通过set_time_limit 函数设置

set_time_limit();

PHPFcgi下PHP的执行时间设置方法

昨天一个程序需要导出条数据结果发现到条是Nginx报出 Gateway Timeout错误

经观察发现大约秒时超时phpini中执行时间配置已经是

复制代码 代码如下:max_execution_time =

再查nginx的相关配置无果

写了一个php的测试页再测

复制代码 代码如下:
echo aaa;
set_time_limit();
sleep();
echo aa;

依然超时可以确定set_time_limit这个函数没生效

再查phpfcgi的配置phpfpmconf下边这个设置疑似有问题

复制代码 代码如下:
<VALUE name="request_terminate_timeout">s</VALUE>

查官方文档

复制代码 代码如下:
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: "s" Note: s means off

大意是php中set_time_limit设置的时间内如果php还没执行完则走此处的配置也就是request_terminate_timeout=
先把这个参数改的和php中set_time_limit值一样都是还不行不理解为什么如果高手知道请赐教

最终把request_terminate_timeout关闭程序可以正常执行了问题解决

复制代码 代码如下:<VALUE name="request_terminate_timeout">s</VALUE>

补充如果前端的nginx服务器使用了upstream负载均衡那个负载均衡配置中以下几个参数也需要相应修改

复制代码 代码如下:
proxy_connect_timeout s;
proxy_send_timeout s;
proxy_read_timeout s;

上一篇:PHP读取xml方法介绍

下一篇:php Smarty 模板使用方法详解