2011-06-15 142 views
0

在我的PHP脚本中,我正在启动一个循环,如果客户端连接中止,我想打破这个循环。检测网络故障排除?

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

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

我的代码:

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

那么,怎样才能我打破循环?我搜查了很多棋盘,但没有发现任何灵魂。我也尝试过“HTTP Keep Alive”,但没有成功。

+1

故障排除是诊断问题的行为。这真的是你的意思吗? – 2011-06-15 15:07:08

回答

0

假设PHP5,你的I/O连接应该在连接状态上抛出一个异常,或者打到一个超时,或者以其他方式通知你这一点。你处理异常,并从那里开始。

如果您正在寻找系统范围内的通知(类似于Android的操作方式,让应用程序知道网络状态已发生变化),我不认为会有这种情况。

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