Me pregunto cómo PHP detecta que se ha agotado el tiempo de una sesión específica.¿Cómo detecta PHP que se ha agotado el tiempo de espera de una sesión?
En detalle: Estoy usando el controlador de sesión predeterminado (basado en archivos), con una duración de sesión predeterminada, y así sucesivamente. Todo en php.ini está predeterminado.
Si ahora se inicia una sesión, PHP realiza una comprobación (dependiendo de no session.gc_divisor y session.gc_probability) si hay alguna sesión expirada. Pero, ¿desde dónde obtiene PHP la última sesión de tiempo de acceso de las sesiones para comprobar?
El archivo de sesión en sí contiene solo la carga de trabajo, p. x|i:1;
para un $_SESSION['x'] = 1;
, por lo que no hay información sobre el tiempo de acceso a la última sesión.
Creo que no hay información en la memoria relacionada con los tiempos de inicio de la sesión, ya que las sesiones siguen funcionando después de un reinicio completo del servidor.
Entonces, ¿de dónde obtiene PHP la información? ¿Está comparando el mtime/ctime del archivo de sesión?
Hola, gracias por su respuesta. Usted escribió "PHP puede usar el mtime del archivo". Estoy bastante seguro de que esta es la forma en que PHP funciona con el manejador de sesión basado en archivos predeterminado, pero ¿hay alguna declaración oficial al respecto? – hacksteak25
No, pero siempre puedes verificar la fuente php si no estás seguro. Debido a que el 'tiempo de último uso' no está codificado en los datos de la sesión en sí, el mtime del archivo de sesión es el único otro lugar donde dicha información está disponible. PHP no mantiene una base de datos de mtimes en otros lugares; si lo hiciera, habría opciones de configuración para especificar dónde y cómo se guardarían esos datos. –
esperaba que hubiera una manera más fácil que buscar en las fuentes;) Pero tienes razón. No hay opciones para los mtimes, así que parece que no hay nada más que el mtime del archivo. Gracias. – hacksteak25