PHP connection_status无法正常工作

时间:2012-08-09 09:15:59

标签: php

我尝试在连接中止时在会话上标记一个值,但php函数connection_status()dosen`t正常工作! 以下是代码:

1没有声明:

session_start();
ignore_user_abort(true);
ob_end_clean();

echo 'Testing'; //test if it has output to the browser
flush();
sleep(7);
echo "test";
flush();
if (connection_status() != CONNECTION_NORMAL){
    $_SESSION['conn']='failed';     //never called
}

2 WITH while语句:

session_start();
ignore_user_abort(true);
ob_end_clean();
echo "Testing connection handling"; 

while (1) { 
if (connection_status() != CONNECTION_NORMAL){
    $_SESSION['conn']='failed';       //worked at some time
    break;
}
sleep(1);
echo "test"; 
flush(); 
}

当我使用这些代码进行测试时,我会在代码执行结束前手动设置连接。 但是第一个代码不起作用,因为我m excepted(do not mark assign 'failed' to the session) , and the second code works. Why the first dosen工作?!

1 个答案:

答案 0 :(得分:0)

这是因为while可行。

想一想。当您第一次运行此PHP页面时,连接不会出现故障,但是经过一段时间后,浏览器已经过时并且从服务器断开连接(可能是gced),连接被归类为有故障,因此您的代码可以运行。

因此它起作用,因为它循环检查连接。

说实话,我不确定你为什么要在服务器和客户端之间创建这样的完整性,这最多是不可靠的。这似乎是互联网如何运作的根本缺陷。