以前一直在聽說如何判斷使用者是否線上這個話題,一直沒得要領,今天特意向大家請教下!!謝謝各位!!
回複討論(解決方案)
把session記錄到資料庫,同時標示出使用者的id號,判斷使用者是否線上就看這個id號對應的session資訊是否到期。不知道我說的對不對,歡迎樓下各位大神拍磚。
去看下session的用法就明白了
主要是判定最後啟用時間,設定一個較短的預設線上時間,如果在這個時間內沒有活動記錄則認為不線上;相反則認為線上。
是我沒說清楚,首先當使用者通過正常渠道,就是點擊退出,這種的話判斷使用者線上不線上就不用多說。我想問的是當使用者沒點擊退出而是直接關閉了瀏覽器,那我怎麼知道使用者還是否線上。
請大家再說下自己的看法,O(∩_∩)O謝謝
把session記錄到資料庫,同時標示出使用者的id號,判斷使用者是否線上就看這個id號對應的session資訊是否到期。不知道我說的對不對,歡迎樓下各位大神拍磚。
請看樓下補充
去看下session的用法就明白了
請看樓下補充
不是一樣嗎,怎麼儲存的就怎麼判斷。
不是一樣嗎,怎麼儲存的就怎麼判斷。
關鍵是時間設定的問題
1、為什麼要判斷使用者是否線上?
既然使用者不線上,那麼他就不會向你發出請求。
除非你有顯示線上人數的需求
2、什麼時候判斷使用者是否線上?
當你需要顯示線上人數時,自然是至少有一個使用者發出了請求
只在響應該請求時統計線上人數即可
如果沒有任何人訪問你的網站,即使統計了又有什麼用?
3、如何判斷使用者線上?
無論是否註冊使用者,只需統計有效 session 的個數就可以了
如果你覺得預設的 session 失效期 1440 秒太長了,你可以按你的需要調整
那麼你怎麼判斷使用者是否有活動呢?每隔一段時間請求下伺服器?那這個請求不是要在每個頁面裡都要加嗎。。。
這個邏輯是這樣,不是請求,因為你的每一個頁面都要去判斷使用者是否線上吧?每個頁面都會去讀取session資訊的,在讀取的時候更新這個時間。
可能有需要知道線上好友的需求,但是也是需要一個時間段的
1、ajax定一個 時間段發送到服務端,證明線上,超過則不在
2、設定一個 時間段內,使用者未訪問頁面,發送請求,斷開會話,同時知道不線上狀態
總之,不可能即時知道使用者是否線上,一定需要一個合理的時間段的
這個要看你是如何記錄登陸資訊的,如果只是簡單的session,只需要判斷使用者資訊對應的session是否存在或者到期就行了,其他思路也都差不多了,反正都是個判斷是否有效問題!
看了大家的回複,瞭解了一些,但是我還是沒想通。因為我做的就是想通過判斷使用者是否線上,然後當他不線上的時候可以自動結束。
然後大家看下,這種的話有什麼思路??
那麼你怎麼判斷使用者是否有活動呢?每隔一段時間請求下伺服器?那這個請求不是要在每個頁面裡都要加嗎。。。
這個邏輯是這樣,不是請求,因為你的每一個頁面都要去判斷使用者是否線上吧?每個頁面都會去讀取session資訊的,在讀取的時候更新這個時間。
看樓下
可能有需要知道線上好友的需求,但是也是需要一個時間段的
1、ajax定一個 時間段發送到服務端,證明線上,超過則不在
2、設定一個 時間段內,使用者未訪問頁面,發送請求,斷開會話,同時知道不線上狀態
總之,不可能即時知道使用者是否線上,一定需要一個合理的時間段的
對於用ajax非同步請求這種的話,需要把那段代碼加在每個頁面裡的吧?
設定時間段看使用者是否訪問頁面這裡又怎麼實現下?沒想到。。。。
然後看下我說的那個再,謝謝
記錄使用者最後訪問時間
檢查使用者最後訪問時間與目前時間的間隔,若超出約定的範圍,則視為不線上
判斷使用者甲是否線上的工作是在使用者乙活動期間進行的
判斷在伺服器端獨立進行,與用戶端無關
你可以使用一個記憶體表來更新使用者的最後操作時間,然後使用Cron來定時執行清理使用者的操作,這樣表裡的就是最近線上的使用者。
我們也可以用關閉瀏覽器事件吧!
我覺得一樓收的就很詳細了
恩 看了大家的回複,思路有一點啦,回頭再弄弄看下效果,感謝各位了O(∩_∩)O哈! 時間比較緊,一直沒時間回複大家!