【问题标题】:Detect network troubleshooting?检测网络故障排除?
【发布时间】:2011-06-15 14:53:39
【问题描述】:

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

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

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

我的代码:

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

那么我怎样才能打破循环呢?我搜索了很多板,但没有找到任何灵魂。我也尝试了“HTTP Keep Alive”,但没有成功。

【问题讨论】:

  • 故障排除是诊断问题的行为。这真的是你的意思吗?

标签: php networking tcp connection


【解决方案1】:

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

如果您正在寻找系统范围的通知(类似于 Android 的方式,让应用知道网络状态已更改),我认为没有这样的事情。

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

【讨论】:

    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多