Compruebe si un usuario está en línea, marco Codeigniter

Quiero agregar funciones en línea o fuera de línea en mi sitio web, que está basado en PHP Codeigniter framework.

Encontré esta biblioteca OnlineUsers0.2 . Pero, ya estoy usando la clase de sesión incorporada y también quiero aprovecharla en los usos en línea.

Mi idea es insertar otro campo en la tabla ci_sessions que tenga identificación de usuario, y cuando muestre la información del usuario, compruebo esa tabla según el ID de usuario si existe en la tabla last_activity y last_activity es menos de 5 minutos que el usuario. en línea y si no existe o last_activity es más de 5 minutos que el usuario está fuera de línea.

Entonces, mi primera pregunta aquí es cómo puedo agregar ese campo user_id a la tabla ci_sessions y es una buena manera de hacerlo.

Y mi segunda pregunta es ¿hay una mejor manera de hacer lo que estoy buscando?

Respondiendo a su segunda pregunta, puede usar javascript websockets fácilmente para hacer esto en tiempo real. También puede realizar largas encuestas utilizando la misma lógica, pero no es un buen enfoque si tiene muchos usuarios de su aplicación.

Función en tiempo real en línea Simplemente cree una columna ‘is_online’ en su tabla de usuarios y escriba una función para actualizar el indicador de estado is_online en la base de datos.

Crea tu servidor websockets php usando http://socketo.me/ o https://github.com/nekudo/php-websocket . Aquí residirá la lógica de su servidor, es decir, si el usuario entra en línea, actualice la bandera en línea y viceversa.

En javascript usando websockets, simplemente puede enlazar eventos onopen y onclose para activar funciones del lado del servidor. A medida que el usuario acceda a cualquiera de sus páginas simplemente actualice el estado en la base de datos.

 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!"); } } 

Referencia adicional http://www.tutorialspoint.com/html5/html5_websocket.htm