Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/03/2005, 11:00
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En una página HTML desde javascript tienes el evento: onUnload() para determinar que se cerró dicha página ..

Pero, en PHP no tienes "evento" para ver si el cliente sigue ahí o no en esa página o ejecutando tal script (que tal vez no tenga salida y sea un proceso puro PHP).

Por eso se suele recomendar que se determine un tiempo de "inactividad" para determinar que el usuario no está "activo" en el sistema ..

Recuerda que PHP lo que hace es; bajo petición .. se pide cierto script.php .. se ejecuta este en PHP (en el servidor) y su resultado es entregado al cliente (navegador por ejemplo) si hay salida (normalmente siempre hay "salida" aunque no genere tu script nada en sí mismo). Por eso .. el control sobre el "cliente" se pierde y hay que "esperar" a otra petición al servidor (de otro script.php) para "saber": "ops! el usuario sigue ahí en el sistema". Esas "peticiones" se pueden hacer automáticas refrescando cierta página (frame oculto que llame a un script.php concreto, podría ser...) .. pero no es lo optimo por consumo de recursos de tu servidor ...

Podrías probar si te sirve sólo con javacript (ante el envento onUnload() .. llamar a tu script.php de "limpieza") .. pero si estás registrando eventos "mal intencionados" perfectamente podrán saltarse esa rutina javacript ...

El tema de "sesiones" para este caso no aplica ..No hay función en sesiones "nativa" que te devuelva el tiempo que le queda a tal cliente .. Sólo nos basamos en que "exista o no" y su valor si lo requerimos para determinar si expiró .. Las sesiones son "únicas" para quien las crea (usuario/cliente que las crea).. además de la explicación que más o menos te mostré de como PHP funciona .. no aplica para nada controlar sesiones para este tema.

Un saludo,