connection_status

(PHP 4, PHP 5, PHP 7, PHP 8)

connection_status返回连接状态位字段

描述

connection_status(): int

获取连接状态位字段。

参数

此函数没有参数。

返回值

返回连接状态位字段,它可以与 CONNECTION_* 常量一起使用来确定连接状态。

参见

添加注释

用户贡献的注释 4 个注释

37
toppi at kacke dot de
20 年前
注意!

如果你正在运行循环(while、foeach 等),你需要向浏览器发送一些内容来检查状态。

示例

while(1){
if (connection_status()!=0){
die;
}
}
当用户关闭浏览器时,这不起作用。

但一个

while(1){
Echo "\n"; //<-- 将此发送到客户端
if (connection_status()!=0){
die;
}
}
将起作用 :)

我希望这能帮助你们中的一些人节省一些时间 :)

Toppi
12
匿名
4 年前
如前所述,此函数返回一个状态位字段,其中有一组可用的常量。我不知道为什么这些常量没有实际列出。虽然它们很容易猜到,但我认为列出它们仍然有价值,毕竟这是文档。此函数可以返回 0 到 3 之间的整数,因此有 4 种可能的状态。

常量如下

CONNECTION_NORMAL = 0
CONNECTION_ABORTED = 1
CONNECTION_TIMEOUT = 2

由于第四种状态是可能的,并且是一个位字段,因此 CONNECTION_ABORTED|CONNECTION_TIMEOUT(或整数 3)可用于检查中止+超时状态。
-6
Michael
19 年前
是的,这是真的。我对函数 'connection_abortes()' 做了一些实验。首先,一个来源出现了错误,我看到了。他们写道:ignore_user_abort();

但这只会告诉你 '中止设置' 的状态。
所以我尝试(抱着一点希望)
'ignore_user_abort(true);'
当我读取设置时,它已经改变了……

接下来我看到,在我与站点断开连接后,脚本仍在运行。但是其他实验失败了。我尝试了一些东西,然后
在一个实验之后,这很有道理:flush() 是必要的事情之一。如果没有向客户端输出,函数
'connection_aborted()' 会保持在 'false' 上
第二点是,你必须输出一些东西。如果没有,它也不会起作用。
所以我现在知道,你必须回显一些东西,然后输出缓冲区。只有这样,'脚本'(或函数)
'才知道' 客户端已经断开连接。
-11
jorge dot hebrard at gmail dot com
15 年前
你可以始终发送 chr(0) 来检查浏览器是否还活着,这在浏览器页面中不会显示任何输出(至少在 Firefox 中是这样)。
To Top