解决办法:
-
设置页面超时时间
-
设置
ignore_user_abort
为false -
判断
connection_aborted
注:方法 2/3 都是通过与客户端的交互获取到的页面状态,所有必须存在实时输出。
采用 2 时,当浏览器关闭后,程序自动终止;
采用 3 的话,可以进行后续操作,例如,用户中途关闭页面后,记录日志
<?php
//ignore_user_abort(false);
$i = 1;
while (1) {
if (!connection_aborted()) {
file_put_contents('hah.txt', $i . PHP_EOL, FILE_APPEND);
echo 1;
ob_flush();
flush();
sleep(1);
$i ++;
} else {
file_put_contents('stop.txt', $i . PHP_EOL);
exit();
}
}