簡體   English   中英

檢查用戶是否在線,Codeigniter框架

[英]Check if a user is online, Codeigniter framework

我想在我的網站上添加在線或離線功能,該功能是基於PHP Codeigniter框架構建的。

我發現這個庫OnlineUsers0.2 但是,我已經在使用內置的會話類,並且我也想在在線用戶中利用它。

我的想法是在ci_sessions表中插入另一個具有用戶ID的字段,當我顯示用戶信息時,如果ci_sessions表中存在ci_sessions表並且last_activity比用戶少5分鍾,則根據用戶ID對該表進行檢查。在線(如果不存在)或last_activity超過用戶脫機5分鍾以上的時間。

因此,我的第一個問題是如何將user_id字段添加到ci_sessions表中,這是一種很好的方法。

我的第二個問題是,有什么更好的方法可以做我想要的嗎?

回答第二個問題,您可以輕松地使用javascript websockets實時進行操作。 您也可以使用相同的邏輯長時間輪詢,但是如果您的應用程序有很多用戶,這不是一個好方法。

實時在線功能只需在用戶表中創建一列“ is_online”,然后編寫一個函數即可更新數據庫中的is_online狀態標志。

使用http://socketo.me/https://github.com/nekudo/php-websocket創建websockets php服務器。 您的服務器邏輯將駐留在此處,即,如果用戶聯機,則更新聯機標志,反之亦然。

在使用websockets的javascript中,您只需掛接onopen和onclose事件即可觸發服務器端功能。 當用戶訪問您的任何頁面時,只需更新數據庫中的狀態即可。

function WebSocketTest()
{
         if ("WebSocket" in window)
         {
              alert("WebSocket is supported by your Browser!");

              // Let us open a web socket
              var ws = new WebSocket("ws://localhost:9998/echo");
              ws.onopen = function()
              {
                  // Web Socket is connected, send data using send()
                  ws.send("Message to send");
                  alert("Message is sent...");
              };
              ws.onclose = function()
              { 
              // websocket is closed.
              alert("Connection is closed..."); 
         };
    }
    else
    {
        // The browser doesn't support WebSocket
        alert("WebSocket NOT supported by your Browser!");
    }
}

進一步參考http://www.tutorialspoint.com/html5/html5_websocket.htm

暫無
暫無

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

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