2009-06-10 97 views
1

嗨,大家好我有一個簡單的會員制網站,用戶登錄並擁有自己的個人資料。我希望能夠在任何時間點告訴有多少用戶,或者哪些用戶當前登錄到我的網站。如何查找創建的會話總數,即登錄用戶數量?

它是一種簡單的基於會員制在PHP。我理解它的一種方式是在數據庫中創建一個表格,並在其中存儲登錄詳細信息和會話數據,但是可以通過其他方式完成此操作,即無論如何查看已啓動了多少會話以及所有唯一的用戶在線。

+0

重複! http://stackoverflow.com/questions/679657/find-number-of-open-sessions – Evert 2009-06-10 21:57:16

+0

@Magnus - 它很好,它幾乎已經結束了:) @Evert - 哎呀沒有注意到,謝謝無論如何都要把它提起來...... – Ali 2009-06-11 05:32:42

回答

6

做到這一點,最好的辦法是記錄lastActivityTime爲每個用戶。當他們訪問頁面時,將時間記錄在他們的db記錄中。一旦你這樣做了,運行一個簡單的查詢來計算從Current TimelastActivityTime小於5分鐘的所有記錄。

因此,而不是問「有多少用戶登錄,」你問「有多少用戶是最近活躍。」我用

0

一種方法是編寫自定義的會話處理器 - 有大量的關於php.net例子。 一旦會話數據在SQL中,您可以使用它做更多的事情。

2

與整個「監視活動的會話」問題的關鍵問題是,你(服務器)不一定在會話的完全控制。用戶的瀏覽器可以在任何給定時間過期會話,因此您無法保證任何時候活躍的用戶。

如果知道當前的用戶非常重要的,然後一列添加到他們的用戶表中指定的時間戳,以及每次加載頁面時更新該字段。如果該列小於大約一分鐘過時,則可以認爲它們是活動的。

你可以做的額外事情(在線聊天室用來維持活動的「聊天」列表)是按給定間隔輪詢一個頁面(使用AJAX),然後即使它們不刷新你仍然知道他們在那裏的頁面。如果ajax請求沒有以指定的時間間隔到達,用戶已經導航,或者關閉了瀏覽器。