Buenas noches, escribo en esta oportunidad porque he notado que la sesión de mi sistema dura 24 minutos y revisé el archivo php.ini
y consegui que la variable gc_maxlifetime
esta definida a 1440 segundos. ¿Eso se puede cambiar para que dure más la sesión? ¿qué me recomiendan hacer en ese caso?
Respuestas
Aunque la pregunta es sencilla y clara, la respuesta no lo es tanto. Las sesiones en PHP se controlan con varias opciones de configuración:
- session.cookie_lifetime indica cuándo expira la cookie que se envía al usuario cuando se crea la sesión. Su valor por defecto es
0
, que hace que se borre la cookie al cerrar el navegador. - session.gc_maxlifetime indica cada cuánto tiempo se comprueban las sesiones creadas por el servidor por si hay que eliminar alguna que se considera terminada.
- session.gc_probability y session.gc_divisor indican la probabilidad de que el proceso que borra las sesiones terminadas se ejecute durante esta petición.
La idea es que comprobar las sesiones existentes y borrar las que hayan terminado es algo que cuesta un tiempo. Para no degradar el rendimiento del servidor, se configura una probabilidad para iniciar el proceso durante una petición dada. Por defecto la probabilidad es del 1%, lo que indica que 1 de cada 100 peticiones arranca el proceso que limpia sesiones terminadas.
Así que debes incrementar el valor de session.cookie_lifetime
y session.gc_maxlifetime
, pero sabiendo que no son cifras exactas, sino que todo depende de un sistema de probabilidad.
@javiereguiluz
Gracias @javiereguiluz por responderme, ahora esas opciones la debo de cambiar desde el php.ini? o lo puedo hacer desde la aplicación? estoy trabajando con .htaccess
@eng_teresa
Puedes cambiar esas opciones desde el archivo .htaccess
. No obstante, si puedes cambiar el archivo php.ini
es recomendable hacerlo ahí. El motivo es que el archivo .htaccess
se lee y procesa para cada petición que te llegue al servidor, mientras que el php.ini
solo se lee una vez al arrancar el servidor web. Si tienes muchos usuarios y muchas peticiones, la mejora en el rendimiento puede llegar a notarse.
@javiereguiluz