使用PhpStudy集成环境设置PHP页面超时配置无效的问题处理

集成环境:

PhpStudy 8.0 Win64, Apache 2.4.39

测试代码:

<?php
set_time_limit(0);

$i = 0;

while($i < 60)
{
    sleep(1);
    $i ++;
}

echo $i;

运行结果:

尽管在PHP代码里设置不限超时(set_time_limit(0)),但执行页面时依然在40s后出现无法加载页面的错误。

之前一直困扰了很久,在PhpStudy上调各种配置都无法解决,后来发现这个错误提示并不是PHP脚本的提示,是Apache服务的出错提示,终于通过网上查找资料找到解决办法。

在Apache的配置文件(httpd.conf)末尾加上以下配置(以下为开发环境特殊配置,按具体场景调整)

<IfModule mod_fcgid.c>
	# php-cgi进程的生存时间
	FcgidProcessLifeTime 9999999
	
	# php-cgi进程IO超时时间
    FcgidIOTimeout 9999999
	
	# php-cgi进程连接超时时间
    FcgidConnectTimeout 9999999
	
	# 上传文件的最大尺寸 100MB
	FcgidMaxRequestLen 104857600
	
	# php-cgi最大的进程数
	# FcgidMaxProcesses 5
</IfModule>

问题原因:

因为PhpStudy中是使用 fastcgi模块(mod_fcgid)启用多个进程实现多个PHP版本共存的,所以执行PHP代码时,除了PHP本身的超时限制,还会有fcgid进程自带的各种超时限制,需要调整相应的参数。

同样,PhpStudy 的 Nginx 也会存在相似的问题。

fcgid更多的配置参数请查看:https://blog.csdn.net/nyist327/article/details/44243399

参考资料:

phpstudy 做的后台长时间运行的脚本,设置了脚本运行时间还是40秒就返回500,用的apache2.4.39

php脚本运行40秒服务器就返回500 Internal Server Error(解决办法在回复中)

apache 使用 mod_fcgid.so模块时 配置指令

Apache使用fcgid模块配置多个PHP版本共存

Apache mod_fcgid 配置实现fcgi process自动重启

mod_fcgid:40秒内读取数据超时

扩展阅读:CGI、FastCGI和PHP-FPM关系详解

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值