2011-07-24 131 views
0

如何在使用php後端時檢測到Flash客戶端的斷開或關閉,從而確保只有活動客戶端用戶名存在於數據庫中。我的方法是使用一些輪詢方法 - 客戶端定期向服務器發送一些消息,否則服務器會從數據庫中刪除客戶端名稱(假設它已關閉),或者使用一些擴展的JavaScript代碼來通知後端的關閉事件。如果腳本無法運行,會發生突然的不正確關閉。還有其他更有效的方法嗎?如何檢測從PHP服務器斷開Flash客戶端?

回答

1

poller方法是我在過去如何處理這個問題。設置Flash以設定的時間間隔輪詢php心跳腳本,該時間間隔將記錄用戶會話的最後訪問時間。然後,如果心跳停止會話清理可以清除任何過期的會話

+0

我們如何檢查心跳是否停止?一旦用戶斷開連接,腳本是否會停止執行?也可以有一個腳本持續檢查來自名稱列在數據庫中的多個客戶端的「停止心跳/輪詢」等條件並刪除任何空閒客戶端?該腳本應該獨立運行。 – Astromaz3

+0

如果Flash客戶端關閉,心跳將停止。應該有一些獨立的作業運行時間超過設定的時間 – plague

+0

嗯,我不知道如何運行獨立運行的腳本。當用戶斷開連接時,使用sleep()或其他延遲功能似乎不起作用。即使connection_aborted()也不可靠。使用Zend amf使事情複雜化。我通過在這裏和那裏捎帶一些服務器維護/用戶檢查代碼來實現輪詢技術。因此,如果任何用戶調用腳本,無論發生什麼,它都會進行服務器清理。顯然,最後一個用戶的數據中會留下一些數據。但是一旦新用戶啓動腳本,這將被刪除.T依靠時間()函數完成,希望它可靠。 – Astromaz3

相關問題