php 等待0.1秒,php执行300多秒连接就会断开

环境:

win2008 r2(64位) iis7.5 php5.5.38(nts-vs11-x86)

php运行方式:fastcgi。

测试代码

$start = microtime(true);

set_time_limit(0); //不限制执行时间

@ini_set('memory_limit', '-1');//不限制内存

$file = './' . time() . '.txt';

for($i = 0; $i < 350; $i++){

echo "$i\n";

ob_flush();

flush();

sleep(1);

file_put_contents($file, $i . ':'. round(microtime(true) - $start, 3)."秒\n", FILE_APPEND);

}

file_put_contents($file, $i . "finished\n", FILE_APPEND);

echo 'finished';

问题描述:

php脚本执行300多秒后(300~320秒),tcp连接就会断开(cmd中执行"netstat -ano | findstr 'ip地址'"命令,300多秒连接消失),此时php-cgi.exe还在继续执行(iis工作进程中可以看到,测试代码还在不断写文件)。等到测试代码执行完毕(向文件中写出了"finished"),浏览器还是一直处于加载状态(使用wireshark抓取数据包,没有发现服务器发送响应数据与断开握手包,300秒内的代码正常)。

相关配置:

iis应用程序池:

c87399a7c7593ea5cfac61d9091e1230.png

连接超时:

5b76326a00dbbbe808a4d9a707fd32b0.png

fastcgi:

d938a8e42d2acc38c6bf2bfb12e93b58.png

还尝试将注册表项"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters\KeepAliveTime"的值改为了7200000,关闭防火墙与其他安全防护软件,都是一样的情况。

但完全相同的软件与配置,在另一台win2008 r2服务器上连接就不会中断。

wireshark抓包(在300多秒服务器连接消失后,未收到来自服务器响应与断开握手包,浏览器一直处于加载状态):

22c2d68e320e296b8851e126af236333.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值