php 怎麼知道擷取所以當前線上使用者

來源:互聯網
上載者:User
現在想擷取網站上面所有線上使用者,有什麼好的方法擷取嗎?

回複內容:

現在想擷取網站上面所有線上使用者,有什麼好的方法擷取嗎?

使用mysql記憶體表或者記憶體性nosql
如果表,表結構: id(自增ID),username(使用者名稱),addtime(添加時間),updatetime(更新時間)
設定逾時時間為20分鐘。那麼線上使用者為
select count() from tbl where updatetime>=(NOW()-2060);
如果是nosql(redis為例),那麼就更簡單了
每個使用者添加一個key,可以用usename的hash值,然後設定這個key的到期日期為20分鐘。
擷取時,只需要執行$redis->keys("session_*");擷取所有使用者
僅僅是個人想法,僅供參考。

http://www.thinkphp.cn/topic/3217.html

存一個時間戳記欄位到 db 中,一旦使用者有新的操作,類似重新整理頁面,跳轉到其他頁面的時候,就更新這個欄位。
判斷使用者是否線上的話,只需要查詢這個欄位,然後比較目前時間戳,可以設定一個值,例如5分鐘,如果差值小於5分鐘,則判斷使用者線上,否則則判斷使用者離線。

題主可以這樣來理解,當使用者請求頁面後,後端響應並把頁面發送過去,之後使用者和伺服器之間是沒有一個所謂的串連狀態的,所以最方便的方法就是當使用者做出一些活動時主動向後端發送訊息,就相當於告訴伺服器,"hello, Im still alive"。但是實際上,你很難百分百做到擷取使用者的真實動作,例如瀏覽器意外關閉,網路故障等等。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.