Pour implémenter un stockage en base de données, ou toute autre méthode, vous aurez besoin de la fonction session_set_save_handler() pour paramétrer vos propres fonctions de stockage. Depuis PHP 5.4.0, vous pouvez créer des gestionnaires de session en utilisant l'interface SessionHandlerInterface ou en étendant les gestionnaires internes de PHP en héritant de la classe SessionHandler.
Les fonctions de rappel précisées dans session_set_save_handler() sont
des méthodes appelées par PHP pendant le cycle de vie de la session: open
,
read
, write
et close
ainsi que les fonctions de ménage destroy
pour supprimer une session
et gc
pour une collecte périodique des gabarits.
Ainsi, PHP a toujours besoin d'un gestionnaire de sessions. Par défaut il s'agit du gestionnaire
interne 'files'. Un gestionnaire personnalisé peut être indiqué au moyen de
session_set_save_handler(). D'autres gestionnaires alternatifs peuvent être proposés
par des extensions PHP, comme sqlite
, memcache
et memcached
et peuvent être utilisés via
session.save_handler.
Lorsque la session démarre, PHP appelera en interne la fonction open
du gestionnaire, suivie de
read
qui doit alors retourner une chaine encodée exactement comme elle a été passée lors du stockage.
Une fois que la fonction de rappel de read
a retourné sa chaine, PHP va alors la décoder
et peupler la super-globale $_SESSION en conséquence.
Lorsque PHP se termine, (ou lorsque session_write_close() est appelée), il va en
interne encoder le contenu de $_SESSION et le passer avec l'ID de session à la
fonction write
. Après write
, PHP invoquera close
.
Lorsqu'une session est détruite, PHP appelera destroy
avec l'ID de session.
PHP appelera la fonction de rappel gc
de temps en temps pour nettoyer
les sessions expirées en fonction de leur
temps de vie maximum. Cet appel devrait mener à la destruction des enregistrements dans
le support de stockage qui n'ont été accédés depuis $lifetime
.