在我的PHP脚本中,我正在启动一个循环,如果客户端连接中止,我想要中断。
当用户按下停止按钮(基本三次握手)时,它工作正常,但如果用户有网络故障排除(wifi连接问题)则不行。
即使连接因网络故障而中止,循环仍在运行。
我的代码:
<?php
while (1) {
Echo "\n";
ob_flush();
flush();
if (connection_status() != CONNECTION_NORMAL) {
break;
}
// update database
sleep(1);
}
?>
那我怎么能打破循环呢?我搜索过很多板子,但没有发现任何灵魂。我也试过“HTTP Keep Alive”但没有成功。
答案 0 :(得分:0)
假设PHP5,您的I / O连接应该在连接状态上抛出异常,或者超时,或者能够通知您。你处理异常,然后从那里开始。
如果您正在寻找系统范围的通知(类似于Android的做法,让应用知道网络状态已经发生变化),我认为没有这样的事情。
因此,您需要将您的读/写代码包装在try/catch block中,以便在出现问题时通知您,并处理catch部分中的情况。检查文档中是否有用于读/写的类/对象,并查看是否/何时抛出异常。当网络连接丢失时,它可能只会抛出通用I / O错误。在许多情况下这是足够的,因为通常你关心的是你是否可以发送数据包,而不一定是“为什么”。您可以使用该信息构建基本的重试功能,或者提示用户他们想要做什么。