class FileSessionHandler implements SessionHandlerInterface { private $savePath; /** * Call session_start call * * @param string $savePath * @param string $sessionName * @return bool */ function open($savePath, $sessionName) { echo "open.\n"; $this->savePath = $savePath; if (!is_dir($this->savePath)) { mkdir($this->savePath, 0777); } return true; } /** * session executes the call * * @return bool */ function close() { echo "close.\n"; return true; } /** * Get session data calls * * @param string $id * @return string */ function read($id) { echo "read.\n"; return (string)@file_get_contents("$this->savePath/sess_$id"); } /** * session assignment call * * @param string $id * @param string $data * @return bool */ function write($id, $data) { echo "write.\n"; return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true; } /** * Call session_destory * * @param string $id * @return bool */ function destroy($id) { echo "destroy.\n"; $file = "$this->savePath/sess_$id"; if (file_exists($file)) { unlink($file); } return true; } /** * Expired calls * * @param int $maxlifetime * @return bool */ function gc($maxlifetime) { echo "gc.\n"; foreach (glob("$this->savePath/sess_*") as $file) { if (filemtime($file) + $maxlifetime < time() && file_exists($file)) { unlink($file); } } return true; } }
Рубрики