注意!
如果你正在运行循环(while、foeach 等),你需要向浏览器发送一些内容来检查状态。
示例
while(1){
if (connection_status()!=0){
die;
}
}
当用户关闭浏览器时,这不起作用。
但一个
while(1){
Echo "\n"; //<-- 将此发送到客户端
if (connection_status()!=0){
die;
}
}
将起作用 :)
我希望这能帮助你们中的一些人节省一些时间 :)
Toppi
(PHP 4, PHP 5, PHP 7, PHP 8)
connection_status — 返回连接状态位字段
此函数没有参数。
返回连接状态位字段,它可以与 CONNECTION_*
常量一起使用来确定连接状态。
注意!
如果你正在运行循环(while、foeach 等),你需要向浏览器发送一些内容来检查状态。
示例
while(1){
if (connection_status()!=0){
die;
}
}
当用户关闭浏览器时,这不起作用。
但一个
while(1){
Echo "\n"; //<-- 将此发送到客户端
if (connection_status()!=0){
die;
}
}
将起作用 :)
我希望这能帮助你们中的一些人节省一些时间 :)
Toppi
如前所述,此函数返回一个状态位字段,其中有一组可用的常量。我不知道为什么这些常量没有实际列出。虽然它们很容易猜到,但我认为列出它们仍然有价值,毕竟这是文档。此函数可以返回 0 到 3 之间的整数,因此有 4 种可能的状态。
常量如下
CONNECTION_NORMAL = 0
CONNECTION_ABORTED = 1
CONNECTION_TIMEOUT = 2
由于第四种状态是可能的,并且是一个位字段,因此 CONNECTION_ABORTED|CONNECTION_TIMEOUT(或整数 3)可用于检查中止+超时状态。
是的,这是真的。我对函数 'connection_abortes()' 做了一些实验。首先,一个来源出现了错误,我看到了。他们写道:ignore_user_abort();
但这只会告诉你 '中止设置' 的状态。
所以我尝试(抱着一点希望)
'ignore_user_abort(true);'
当我读取设置时,它已经改变了……
接下来我看到,在我与站点断开连接后,脚本仍在运行。但是其他实验失败了。我尝试了一些东西,然后
在一个实验之后,这很有道理:flush() 是必要的事情之一。如果没有向客户端输出,函数
'connection_aborted()' 会保持在 'false' 上
第二点是,你必须输出一些东西。如果没有,它也不会起作用。
所以我现在知道,你必须回显一些东西,然后输出缓冲区。只有这样,'脚本'(或函数)
'才知道' 客户端已经断开连接。
你可以始终发送 chr(0) 来检查浏览器是否还活着,这在浏览器页面中不会显示任何输出(至少在 Firefox 中是这样)。