如何解决检测网络故障排除?
| 在我的PHP脚本中,我开始一个循环,如果客户端连接中断,我想中断该循环。 当用户按下停止按钮(基本三向握手)时,它工作正常,但如果用户进行网络故障排除(WiFi连接问题),则无法正常工作。 即使连接因网络故障而中止,循环仍在运行。 我的代码:<?php
while (1) {
Echo \"\\n\";
ob_flush();
flush();
if (connection_status() != CONNECTION_NORMAL) {
break;
}
// update database
sleep(1);
}
?>
那么我该如何打破循环?我搜索了很多板子,但没有找到任何灵魂。我也尝试了“ HTTP Keep Alive”,但没有成功。
解决方法
假设使用PHP5,则您的I / O连接应该在连接状态上引发异常,或者发生超时,或者以其他方式通知您。您处理异常,然后从那里去。
如果您正在寻找系统范围的通知(类似于Android的通知方式,以便让应用知道网络状态已发生变化),我认为没有这种情况。
因此,您需要将读取/写入代码包装在try / catch块中,以使其在出现问题时通知您,并在catch部分中处理情况。检查您正在使用的类/对象的文档以进行读取/写入,并查看是否/何时抛出异常。当网络连接断开时,它可能只会引发一般的I / O错误。在许多情况下,这已经足够了,因为通常您只关心是否可以发送数据包,而不必“为什么”。您可以使用该信息来构建基本的重试功能,或提示用户有关其操作的信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。