Cargando...

Incrementar tiempo de sesión de PHP y Apache

Aprende a solucionar uno de los típicos escenarios, donde la sesión que has abierto en tu aplicación, no es suficiente de la que requieres. Que la aplicación que has escrito no tiene responsabilidad, y aunque de alguna manera, puedes especificarlo desde la misma, es responsabilidad de lado del servidor, donde este tiene que mediar en la decisión de cuánto tiempo de vigencia les dará a tus aplicaciones. Claramente está involucrado el servidor http que estés utilizando, sin embargo, también PHP como lenguaje en sus configuraciones, ya que este último, no solamente es un lenguaje, sino también un entorno que goza con los poderes de ser ejecutado como servidor, lo que lo convierte en un lenguaje poderoso y completamente configurable.

Escenario real

En estos momentos, estoy intentando escribir en el estudio de esta plataforma, donde muchas veces, me tomo mi tiempo para desarrollar el contenido, aunque otras veces sí que soy bastante rápido, como creo que puede ser este momento. Resulta que la sesión se me cierra cada 24 minutos ¿Cómo sé este dato? bueno, no es que me haya puesto a medir el tiempo, sino más bien, revisé en el servidor lo que estaba asignado, así que sí, esto lo puedes visualizar desde ahí, ya que es una directiva de PHP configurable. Esto no me gustaba para nada y supongo que para mis colegas sería nefasto el estar usando una sesión y que aquello que no has guardado simplemente se pierda por el hecho en que tu sesión se ha agotado.

Objetivo de la solución

  • Configurar alguna directivas de PHP para asignarle más duración en el tiempo de vida de la sesión, que en vez de 24m, sean perfectamente 12h.

¡Vamos al laboratorio!

En el servidor, ubicar el fichero php.ini en la ruta específica y editarlo, puede ser con nano como con vim o el editor que más te guste:

sudo nano /etc/php/7.2/apache2/php.ini

Podemos encontrar que la versión de PHP que está usando el servidor en las 7.2, por lo que los ficheros de configuración se encontrarán dentro del mismo directorio, de otro modo que tengas otra versión, es tan sencillo como acceder a la versión que estás utilizando y continuar con las instrucciones. Ah, esto lo estoy haciendo en GNU/Linux, sin embargo, si estuviéras usando Windows con XAMPP, sería tan sencillo como seleccionar desde la interfaz, el fichero php.ini y acceder a las configuraciones por medio del bloc de notas.

Se proceden a actualizar las siguientes directivas:

  • Si estás desde la terminal utilizando nano, presiona la combinación de teclas: CTRL + W, para filtrar, así llegas más rápido, los de Windows, ya saben, CTRL + F en el bloc de notas.
  • La directiva más importante es session.gc_maxlifetime. Seguramente tendrá como valor asociado, la cantidad 1440, si este lo divides entre 60s, obtienes la cantidad en minutos, que son 24m. Lo que se asignará será el valor de 43200s que equivalen a 12h. De igual forma, esto lo puedes ir ajustando a tu medida.
  • La directiva session.cache_expire tiene por objetivo mantener el tiempo de caducidad de la memoria caché HTTP, que informan al navegador durante cuánto tiempo puede mantener las páginas almacenadas en la memoria caché del usuario sin tener que recargarlas desde el servidor. Esto suele ser confundido con que sea la misma función de session.gc_maxlifetime.
  • La directiva session.cookie_lifetime especifica el tiempo de vida en segundos de la cookie que es enviada al navegador. El valor 0 significa "hasta que el navegador se cierre". Por defecto es 0. La marca de tiempo de caducidad se establece relativa la hora del servidor, la cuál no es necesariamente la misma que la hora del navegador del cliente.
session.gc_maxlifetime = 43200
session.cache_expire = 720
session.cookie_lifetime = 0 

Con el conocimiento sobre las directivas y llevando a cabo las configuraciones en el fichero de configuración anteriormente orientado, producirá simplemente una actualización y para que surjan efectos, lo único que se espera, es que se reinicie el servidor HTTP, que en este caso es Apache.

sudo systemctl restart apache2

Con esto, ya deberías tener la solución, de hecho, si este artículo se publica con éxito, después de escribir la primera parte hace unas cuantas horas, de interrumpirlo y luego de llegar hasta este punto de publicar, entonces es que esto a funcionado, ya que lo he puesto en práctica en este servidor, así que más prueba de que funcione, no te puedo ofrecer. Igualmente, si encuentras alguna incidencia, comparte y lo vemos con calma para encontrar solución.

  • John Doe
    43 Sales$156,24 Totals
    62%
  • Rosy O'Dowell
    12 Leads$56,24 Totals
    32%

With supporting text below as a natural lead-in to additional content.

Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled.