php 一直运行页面,为什么浏览器关闭后PHP还会一直执行啊

怪我咯2017-04-10 17:13:321楼

PHP在发送信息给客户端时,才能检测连接是否已经中断.

http://php.net/manual/zh/function.ignore...

php.ini中ignore_user_abort默认是Off,不忽略用户的中断,也就是客户端断开连接后,脚本将被中止.

在PHP尝试发送信息到客户端之前,不会检测到用户是否已中断连接.

仅使用echo语句不能确保信息已发送,参见flush()函数.

info.php

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

sleep(1);

}

file_put_contents('/tmp/info.txt', $i);

测试:

time curl http://127.0.0.1/info.php

Ctrl+C中断请求(PHP-FPM)最后还是生成了文件info.txt.

因为该请求没有输出,PHP无法检测用户是否已中断连接.

PHP在发送信息给浏览器时,才能检测连接是否已经中断.

比如执行这段代码,在5秒内中断请求,将不会生成文件info.txt:

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

echo $i;

ob_flush();

flush();

sleep(1);

}

file_put_contents('/tmp/info.txt', $i);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值