簡體   English   中英

生成在線用戶列表?

[英]Generate a list of online users?

我還不足以編寫一個聊天應用程序,並且我正在嘗試開發一個聊天應用程序,最近我從這里下載了一個聊天應用程序,到目前為止,它是相當不錯的,因為我已經在XAMPP上對其進行了測試,但是我有一個問題。 我試圖生成一個在線用戶列表,以給它一個更實際的應用程序風格的感覺,但是問題是我不知道如何輕松地做到這一點。

當用戶登錄到我的網站時,將創建一個名為g_username的會話(聊天顯示為“ username”,但我會解決該問題),到目前為止,最簡單的方法是將其用戶名存儲在一個名為OnlineUsers並通過Ajax調用該數據,但是另一個問題是,它是基於會話的,有時用戶可以直接退出而無需注銷,我打算運行一個腳本來從OnlineUsers表和通過刪除會話。

如果他們沒有注銷就離開,他們將永遠在線! 我可能會在每個頁面上添加一些代碼,從而在頁面關閉時切換一個ajax事件,該事件是一個腳本,該腳本會殺死其OnlineUsers表記錄,但是當用戶在頁面之間跳轉時,該腳本又會向服務器加載無用的查詢,據我所知。

在Ajax中創建我的整個網站並不是一個真正的選擇,因為它是將來自社交服務的不同網站的負載與社交“圖層”(如果願意)組合到1個“地方”中的負載。

有沒有人看到一種可行的方法,這種方法很有意義,並且易於集成,並且可以在沒有命令行訪問的情況下與Apache一起使用?

您可能每60秒左右在服務器上運行一次cron作業[如果有cpanel],該作業將檢查用戶最后一次通過聊天發送任何內容的時間(如果最后一次沒有顯示5分鍾),然后從網上刪除他們的條目用戶列表。

您可以執行以下操作:將用戶上次操作的時間戳記存儲在數據庫中,在輸出在線用戶時比較該時間戳記,並確保最多在1分鍾前完成。

在所有/重要頁面上運行:(確定最后一個操作是否已過時,您還可以檢查一分鍾前是否已完成操作,以減少數據庫負載)

if($user['lastAction'] < time()) {
   //update into database, last action is outdated
}

計算在線用戶數並且在每個時間戳的循環內

//If the users last action was within a minute, the user is most likely online    
if(($row['lastAction']- time()) > 60*60)
       //count user as online

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM