|
Te describo lo que hice en una situación parecida.
A tu tabla de conexiones le agregas un campo: ultimo_acceso. Cada aplicación cliente actualiza cada cierto tiempo, digamos cinco segundos, este campo con la hora actual. La aplicación monitora, se fija en el valor de este campo y lo compara con la hora actual. Si la diferencia es mayor de cinco segundos y su estátus marca como activo al usuario correspondiente, querrá decir que tal usuario sufrió una desconexión involuntaria puesto que de otra forma la aplicación cliente ya habría actualizado el campo o, en caso de haber terminado normalmente, ya no estaría marcado como activo.
En esta situación, la aplicación monitora considera que el usuario ya no está activo y cierra su sesión cambiando el campo status y fijando la hora de salida al último acceso o la hora actual.
Claro que para estos casos tendrás una imprecisión en la hora de salida de unos segundos pero normalmente esto no es vital.
// Saludos
|