本地連接線上redis數據庫存session

參考文檔https://blog.csdn.net/lipeigang1109/article/details/78664234

這是一個直接封裝好的類,複製粘貼即可使用(標紅的修改成自己的)。

強調一點,必須裝了redis的擴展才可使用(我安裝的是lnmp.org 地址https://lnmp.org/faq/addons.html)

class RedisSession implements SessionHandlerInterface
{
    private $handle;
    private $lifetime;
    private $prefix = 'PHPSESSID:';

    /**
     * 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('r-2zef1d24c420b1f4.redis.rds.aliyuncs.com', '6379');//阿里的服務器,網址+端口
        // redis 密碼
        $this->handle->auth('******');//密碼
        $this->handle->select('101');//第幾個數據庫,按需求讓使用第幾個改爲幾就行
        // 過期時間設置
        $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 RedisSession();
// 設置用戶自定義會話存儲函數
session_set_save_handler($handler, true);
register_shutdown_function('session_write_close');
session_start();

$session = $_SESSION['test'] = 'test';

var_dump($session);

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章