[PHP] 代码片段之 Redis SessionHandler

来源:互联网 发布:手柄键盘映射软件 编辑:程序博客网 时间:2024/06/16 14:35
class Redis_Session implements SessionHandlerInterface  {      private $handle;      private $lifetime;      private $prefix = 'TESTSID:';      /**      * open session      * @param string $save_path      * @param string $session_name      * @return bool      */      public function open($save_path, $session_name)      {          $this->handle = new Redis();          $this->handle->connect('127.0.0.1', '6379');         // redis 密码        $this->handle->auth('authPassword');         // 过期时间设置        $this->lifetime = ini_get('session.gc_maxlifetime');          return true;      }      /**      * close session      * @return bool      */      public function close()      {          $this->gc($this->lifetime);          $this->handle->close();          $this->handle = null;          return true;      }      /**      * read session by session_id      * @param string $session_id      * @return mixed      */      public function read($session_id)      {          $session_id = $this->prefix . $session_id;          $data = $this->handle->get($session_id);          $this->handle->expire($session_id, $this->lifetime);          return $data;      }      /**      * write session by session_id      * @param string $session_id      * @param string $session_data      * @return mixed      */      public function write($session_id, $session_data)      {          $session_id = $this->prefix . $session_id;          $this->handle->set($session_id, $session_data);          return $this->handle->expire($session_id, $this->lifetime);      }      /**      * delete session_id      * @param string $session_id      * @return mixed      */      public function destroy($session_id)      {          return $this->handle->rm($this->prefix . $session_id);      }      /**      * this function is no use because of redis expire      * @param int $maxlifetime      * @return bool      */      public function gc($maxlifetime)      {          return true;      }  }  $handler = new Redis_Session();  // 设置用户自定义会话存储函数session_set_save_handler($handler, true);  session_start();  $session_id = session_id();$_SESSION[$session_id] = 1;  echo $_SESSION[$session_id];