检测网络故障排除?

时间:2011-06-15 14:53:40

标签: php networking tcp connection

在我的PHP脚本中,我正在启动一个循环,如果客户端连接中止,我想要中断。

当用户按下停止按钮(基本三次握手)时,它工作正常,但如果用户有网络故障排除(wifi连接问题)则不行。

即使连接因网络故障而中止,循环仍在运行。

我的代码:

<?php
while (1) {
    Echo "\n";
    ob_flush();
    flush();
    if (connection_status() != CONNECTION_NORMAL) {
        break;
    }
    // update database
    sleep(1);
}
?>

那我怎么能打破循环呢?我搜索过很多板子,但没有发现任何灵魂。我也试过“HTTP Keep Alive”但没有成功。

1 个答案:

答案 0 :(得分:0)

假设PHP5,您的I / O连接应该在连接状态上抛出异常,或者超时,或者能够通知您。你处理异常,然后从那里开始。

如果您正在寻找系统范围的通知(类似于Android的做法,让应用知道网络状态已经发生变化),我认为没有这样的事情。

因此,您需要将您的读/写代码包装在try/catch block中,以便在出现问题时通知您,并处理catch部分中的情况。检查文档中是否有用于读/写的类/对象,并查看是否/何时抛出异常。当网络连接丢失时,它可能只会抛出通用I / O错误。在许多情况下这是足够的,因为通常你关心的是你是否可以发送数据包,而不一定是“为什么”。您可以使用该信息构建基本的重试功能,或者提示用户他们想要做什么。