Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Mantener lista de usuarios activos

Estas en el tema de Mantener lista de usuarios activos en el foro de Mysql en Foros del Web. Hola, Tengo un juego en línea hecho en c++, en el cual los usuarios se conectan y pueden jugar entre si. El problema que tengo ...
  #1 (permalink)  
Antiguo 20/10/2011, 08:52
Avatar de latinpower  
Fecha de Ingreso: septiembre-2010
Ubicación: Canelones
Mensajes: 116
Antigüedad: 13 años, 6 meses
Puntos: 10
Mantener lista de usuarios activos

Hola,

Tengo un juego en línea hecho en c++, en el cual los usuarios se conectan y pueden jugar entre si.

El problema que tengo es que si un usuario cierra de ventana bruscamente, o se le cae el internet, sigue figurando en la base de datos como un usuario activo.

Lo que había pensado para resolver este inconveniente fue crear un procedimiento de mysql, con variables de usuario, cosa de que cuando se le cierre la conexión con mysql, éste cambie el atributo 'activo' de 1 a 0.

La forma seria, un usuario se loggea, y llama al procedimiento dandole su idusuario, y este procedimiento trabaja con un sleep, fijandose cada tanto que la variable de usuario exista, y no existe(quiere decir que se cerro la conexión) y por lo tanto da de baja al usuario.

Ahora, tengo entendido que cuando se cierra la conexión estas variables mueren, pero el procedimiento, permanece activo ? o también se cierra junto con la variable ?

Acá tengo un ejemplo de lo que quiero hacer

Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. DROP PROCEDURE IF EXISTS `mant_online` $$
  4. CREATE DEFINER=`root`@`localhost` PROCEDURE `mant_online`(in idjugador int)
  5.  
  6. set @aux = idjugador;
  7.  
  8.  
  9.  
  10. if @aux is null then update jugadores set activo = 0 where idjugadores = @aux;
  11.  
  12.  
  13. until @aux is null
  14.  
  15.  
  16. END $$
  17.  
  18. DELIMITER ;

Etiquetas: activos, lista, select, sql, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:05.