Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/11/2010, 21:43
Avatar de ElJavista
ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 2 meses
Puntos: 67
Respuesta: usuarios online en sistema de registros

Ese es un buen problema. Me parece que no existe un método realmente satisfactorio para resolverlo, pero a mí se me ocurre algo que sería una aproximación a la resolución.

A parte de tu campo online_user creas otro campo, un campo datetime, en el que se guarde la fecha y hora de la última petición, o sea, cada vez que se recargue la página y continue logueado el usuario se actualizará ese campo con la fecha y hora presente. Bien, ahora programa un scritp PHP en un archivo, mediante una consulta SQL se cambiará el valor del campo online_user a cero en el caso de que al comparar la fecha y hora actual con la fecha y hora del registro se obtenga un número de minutos igual o mayor al tiempo en que expira la sesión cuando ya no hay actividad. Eso está determinado por la configuración de PHP, no sé cuanto será por lo general ese tiempo, pero bien podrías averiguarlo.

Todo esto se puede hacer con una sola sentencia sql, sería algo así:

UPDATE users SET online_user = 0 WHERE MINUTE(TIMEDIFF(NOW(), online_time)) >= 10 AND online_user = 1

Obviamente online_time viene a ser este campo donde se guarda el fecha y hora. Bien, ya está, ahora lo que queda es ejecutar ese archivo periódicamente. Lo cual es tarea del cronjob. Programas un cronjob para que ejecute ese archivo PHP cada 5 minutos por ejemplo, bueno, el tiempo que tú quieras. en caso de que no sepas como configurar un crojob aquí tienes una página donde se explica como hacer eso:

http://directorio.efxto.com/blog/35-...-un-script-php

Te recomiendo la última opción donde no envía el e-mail de aviso de la ejecución de la tarea, sino tu bandeja de entrada se llenaría muy rápido. A no ser que abras una cuenta especialmente para eso.

Bueno, eso sería todo. Creo que es una solución algo complicada e inexacta, pero no veo otra opción. Suerte.

Última edición por ElJavista; 12/11/2010 a las 07:34