Gestión personalizada de sesiones

Para implementar un almacenamiento en base de datos, u otro método, se necesitará la función session_set_save_handler() para configurar las propias funciones de almacenamiento. Un gestor de sesión puede crearse utilizando la interfaz SessionHandlerInterface o extendiendo los gestores internos de PHP heredando de la clase SessionHandler.

Las funciones de retrollamada especificadas en session_set_save_handler() son métodos llamados por PHP durante el ciclo de vida de la sesión: open, read, write y close así como las funciones de mantenimiento destroy para eliminar una sesión y gc para una recolección periódica de patrones.

Así, PHP siempre necesita un gestor de sesiones. Por omisión se trata del gestor interno 'files'. Un gestor personalizado puede indicarse mediante session_set_save_handler(). Otros gestores alternativos pueden ser propuestos por extensiones PHP, como sqlite, memcache y memcached y pueden utilizarse mediante session.save_handler.

Cuando la sesión comienza, PHP llamará internamente a la función open del gestor, seguida de read que debe entonces devolver una cadena codificada exactamente como fue pasada durante el almacenamiento. Una vez que la función de retrollamada de read haya devuelto su cadena, PHP la decodificará y poblará la superglobal $_SESSION en consecuencia.

Cuando PHP finaliza (o cuando session_write_close() es llamada), codificará internamente el contenido de $_SESSION y lo pasará con el ID de sesión a la función write. Después de write, PHP invocará close.

Cuando una sesión es destruida, PHP llamará a destroy con el ID de sesión.

PHP llamará a la función de retrollamada gc de vez en cuando para limpiar las sesiones expiradas según su tiempo de vida máximo. Esta llamada debería llevar a la destrucción de los registros en el soporte de almacenamiento que no han sido accedidos desde $lifetime.

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top