[英]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.