Wenn die Speicherung in einer Datenbank oder irgendeine andere Art der Speicherung implementiert werden soll, kann session_set_save_handler() verwendet werden, um eine Reihe benutzerdefinierte Speicherfunktionen zu erstellen. Mit dem SessionHandlerInterface können Session-Routinen erstellt werden oder PHP-interne Routinen durch Beerbung von SessionHandler erweitert werden.
   Die in session_set_save_handler() definierten
   Callback-Funktionen sind Methoden, die von PHP während des Lebenszyklus
   einer Session aufgerufen werden: open,
   read, write und
   close und für Verwaltungsaufgaben:
   destroy um eine Session zu löschen und
   gc für die regelmäßige Speicherbereinigung.
  
   Deshalb benötigt PHP immer Session-Speicherroutinen. Der Standard ist
   normalerweise die interne 'files'-Speicherroutine. Eine benutzerdefinierte
   Speicherroutine kann mittels session_set_save_handler()
   erstellt werden. Alternative interne Speicherroutinen werden auch von
   PHP-Erweiterungen, z. B. sqlite,
   memcache und memcached zur
   Verfügung gestellt und können mittels
   session.save_handler
   festgelegt werden.
  
   Wenn die Session beginnt, ruft PHP intern die
   open-Routine, gefolgt vom
   read-Callback auf, der eine verschlüsselte
   Zeichenkette genau so zurückgeben sollte, wie sie ursprünglich für die
   Speicherung übergeben wurde. Nachdem der
   read-Callback die verschlüsselte Zeichenkette
   zurückgegeben hat, wird sie von PHP entschlüsselt und die Superglobale
   $_SESSION mit dem resultierenden Array gefüllt.
  
   Wenn das PHP-Skript endet (oder wenn
   session_write_close() aufgerufen wird), wird die
   Superglobale $_SESSION intern verschlüsselt und zusammen
   mit der Session-ID an den write-Callback übergeben.
   Nach dem write-Callback ruft PHP intern den
   close-Callback auf.
  
   Wenn eine Session gelöscht werden soll, ruft PHP die
   destroy-Routine mit der Session-ID auf.
  
   Von Zeit zu Zeit ruft PHP den gc-Callback auf, um
   Sessions zu löschen, die entsprechend ihrer eingestellten maximalen
   Lebensdauer abgelaufen sind. Diese Routine sollte alle gespeicherten
   Datensätze löschen, auf die länger als die in
   $lifetime festgelegte Zeitspanne nicht mehr
   zugegriffen wurde.
  
