2016-01-03 32 views
1

我想在我的网站中添加线上或线下功能,这些功能是基于PHP Codeigniter框架构建的。检查用户是否在线,Codeigniter框架

我找到这个库OnlineUsers0.2。但是,我已经在使用内置的会话类了,我也想在线上使用它。

我的想法是插入ci_sessions表中的其他领域有用户ID,当我显示用户的信息我做了检查,根据用户的ID表,如果它在ci_sessionslast_activity存在是不到5分钟比用户在线,如果不存在或last_activity比用户离线时间多5分钟以上。

所以,我的第一个问题是如何将user_id字段添加到ci_sessions表中,这是一个很好的方法。

而我的第二个问题是有更好的方法来做我想找的?

+0

什么笨的版本? – DFriend

+0

@DFriend我使用CodeIgniter 2.2.2版本 – ler

+0

我会先使用新的代码。 – user4419336

回答

1

回答您的第二个问题,您可以使用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

相关问题