2011-06-15 98 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錯誤。在很多情況下,這是足夠的,因爲通常你關心的是你是否可以發送數據包,而不一定是「爲什麼」。您可以使用該信息構建基本重試功能,或者提示用戶想要處理的內容。