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
.