La clase SessionHandlerInterface SessionHandlerInterface
&reftitle.intro; SessionHandlerInterface es una interfaz que define un prototipo para crear un gestor de sesiones personalizado. Para pasar un gestor de sesiones personalizado a session_set_save_handler usando su invocación de POO, la clase debe implementar esta interfaz. Observe que los métodos de llamada de retorno de esta clase están diseñados para ser llamados internamente por PHP y no para ser llamados desde código de espacio de usuario.
&reftitle.classsynopsis; SessionHandlerInterface SessionHandlerInterface &Methods;
Ejemplo usando <classname>SessionHandlerInterface</classname> El siguiente ejemplo proporciona almacenamiento de sesiones basado en ficheros similar al gestor de almacenamiento de sesiones predeterminado de PHP files. Este ejemplo podría fácilmente ser extendido para cubrir almacenamiento de bases de datos usando su motor de bases de datos favorito soportado por PHP. Observe que usamos el prototipo de POO con session_set_save_handler y registramos la función de cierre usando la bandera de parámetro de la función. Esto normalmente es aconsejable al registrar objetos como gestores de almacenamiento de sesiones. savePath = $savePath; if (!is_dir($this->savePath)) { mkdir($this->savePath, 0777); } return true; } public function close() { return true; } public function read($id) { return (string)@file_get_contents("$this->savePath/sess_$id"); } public function write($id, $data) { return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true; } public function destroy($id) { $file = "$this->savePath/sess_$id"; if (file_exists($file)) { unlink($file); } return true; } public function gc($maxlifetime) { foreach (glob("$this->savePath/sess_*") as $file) { if (filemtime($file) + $maxlifetime < time() && file_exists($file)) { unlink($file); } } return true; } } $handler = new MySessionHandler(); session_set_save_handler($handler, true); session_start(); // proceed to set and retrieve values by key from $_SESSION ]]>
&reference.session.entities.sessionhandlerinterface;