[php] 代碼片段之 Redis SessionHandler

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];  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章