2011-04-26 171 views
1

我將PHP用作服務器端語言,並將Flex用作前端。在我的應用程序中有不同級別的用戶。根據運營商的在線狀態,QC在線分配一些工作。我只想在他自動關閉瀏覽器時更新用戶的在線/離線狀態。 Flex調用PHP服務,但沒有得到任何迴應。 DB(MySQL)沒有得到更新。任何幫助表示讚賞。當用戶關閉瀏覽器時自動註銷用戶

+0

它需要多久更新一次?每隔幾分鐘就夠了,還是需要活下去? – Mikecito 2011-04-26 06:29:33

+0

嗨@Mikecito,當用戶登錄時,他的在線狀態變爲'1',直到他註銷。如果他直接關閉瀏覽器,我想在DB中將他的在線狀態設置爲'0'。我只想更新他的在線狀態。我沒有設置任何會話時間。 – 2011-04-26 06:34:53

回答

7

據我所知這是不可能的。您最好的選擇是在用戶登錄時將datetime保存到數據庫中,然後運行AJAX腳本來更新數據庫中每分鐘的用戶時間。然後,您可以檢查用戶是否有超過一分鐘的datetime以查看用戶是否已登錄。您可以調整此方法的「分辨率」,例如每5分鐘檢查一次。

+0

嗨@cbh,請你詳細解釋一下,或者我可以得到這個問題的任何鏈接或樣本。 – 2011-04-26 09:41:46

+0

@Naveen kumar Pavuturi - 你必須更清楚你的問題。我的回答是針對問題的標題。你對這個問題的描述似乎指出了Flex和PHP(或者PHP和DB)之間的通信問題。請通過編輯問題描述進一步解釋您遇到的問題......包括有問題的任何錯誤和代碼片段。 – RANGER 2011-04-26 17:59:11

0

如果您希望在瀏覽器關閉之前進行服務調用,我認爲您需要讓Javascript向flex/flash客戶端發送消息,然後讓flex發出服務調用以讓您的服務器知道客戶端/瀏覽器正在關閉。一旦服務調用(請求/發佈)成功,Flash客戶端將響應Javascript以繼續瀏覽器關閉。注意這裏是我不認爲你可以一直有從瀏覽器到瀏覽器的JavaScript塊。在閃光燈可以啓動服務呼叫之前,瀏覽器可能會關閉。祝你好運。

順便說一句,您可以使用ExternalInterface註冊一個回調監聽器,並使用回調監聽器中引用的javascript函數來獲取javascript信號。

0

謝謝大家。我對AJAX感到困惑,但終於完成了。我在關閉瀏覽器的同時調用一個函數。 <body onunload='Logout();'>。這裏的功能

var xmlhttp = new XMLHttpRequest(); url = "http://*****.com/public/LogOutThruJS.php?UserID="+UserID+"&LogHistoryId="+LogHistoryId; function Logout() { xmlhttp.open("GET", url,false); xmlhttp.send(null); xmlhttp=null; delete xmlhttp;
}
我希望它的可讀性:)。

相關問題