El usuario ha iniciado sesión en un sitio web PHP> Reinicio Apache> El usuario debe iniciar sesión de nuevo.
¿Cómo prevenir esto? (No quiero que el usuario deba iniciar sesión nuevamente)
El usuario ha iniciado sesión en un sitio web PHP> Reinicio Apache> El usuario debe iniciar sesión de nuevo.
¿Cómo prevenir esto? (No quiero que el usuario deba iniciar sesión nuevamente)
Respuestas:
Almacenar un token de sesión en una ubicación alternativa como copia de seguridad evitaría este problema. Aún puede mantener su información principal $_SESSION
, pero mantenga un token de respaldo en:
Puede encontrar ayuda en esta pregunta de StackOverflow: mejores prácticas para tiempos de espera de sesión e inicio de sesión persistente en php .
Los datos de su sesión no deben perderse solo porque Apache se apaga o reinicia a menos que los datos de la sesión se almacenen en la memoria y no se respalden en el disco (ya sea por el sistema de archivos o la base de datos). De lo contrario, podría reiniciar todo el servidor y la sesión aún persistiría. Los datos de la sesión están diseñados para almacenarse a largo plazo. La única vez que se pierde la sesión es si:
El SID se pierde. Los datos de la sesión todavía existen en el lado del servidor, pero el cliente no puede recuperar el SID, por lo que no puede reiniciar la misma sesión. Esto puede suceder si la cookie SID caduca (si es una cookie) o si se pierden los enlaces de sesión (si el SID es un parámetro de URL) o si el SID no está configurado en el lado del servidor o se cambia sin notificar al cliente.
Los datos de la sesión se eliminan del lado del servidor. Esto suele suceder cuando se ejecuta PHP Session Garbage Collector y ve que el archivo de sesión es anterior a session.gc_maxlifetime (que es 24 minutos por defecto). De lo contrario, puede suceder si la aplicación elimina explícitamente la sesión . En algunos servidores, el administrador también puede haber configurado un cronjob para limpiar los datos de la sesión anterior de forma regular.
Hecho posible usando el argumento correcto con Apache:
apache2ctl -k graceful
Apache se reiniciará sin perder las sesiones actuales.