麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

thinkphp框架下session存入mongo

2020-03-22 20:20:15
字體:
來源:轉載
供稿:網友
  • 最近做系統的時候處理到session入數據庫問題 , 由于是在thinkphp框架下, 查看了下框架session相關代碼, 發現原框架默認支持mysql數據庫 ,

    于是對原Session驅動做了相應修改 , 使其支持mongo數據庫存儲session

    修改的相關文件是ThinkSessionDriverDbDb.html' target='_blank'>class.php , 本人使用的是TP3.2,2版本 , 修改后的Db.class.php代碼如下:


    <?phpnamespace ThinkSessionDriver;class Db{    const MONGO_EXPIRY = 3;    private $host = '';    private $port = '';    private $username = '';    private $password = '';    private $dbname = '';    private $dbsession = '';    private $__mongo_collection = NULL;    private $__current_session = NULL;    /**     * Default constructor set default parameter     * @access public     */    public function __construct()    {        $this->host = C('DB_HOST');        $this->port = C('DB_PORT');        $this->username = C('DB_USER');        $this->password = C('DB_PWD');        $this->dbname = C('DB_NAME');        $this->dbsession = C('SESSION_TABLE');        $this->__connect();        session_set_save_handler(            array(&$this, 'open'),            array(&$this, 'close'),            array(&$this, 'read'),            array(&$this, 'write'),            array(&$this, 'destroy'),            array(&$this, 'gc')        );    }    /**     * connectes the mongo database and create collection     * @access private     */    private function __connect()    {        $connection_string = sprintf('mongodb://%s:%s', $this->host, $this->port);        if ($this->username != null && $this->password != null) {            $connection_string = "mongodb://{$this->username}:{$this->password}@{$this->host}:{$this->port}";            $connection_string = sprintf('mongodb://%s:%s@%s:%s', $this->username, $this->password, $this->username, $this->password);        }        $object_mongo = new Mongo($connection_string);        $object_mongo = $object_mongo->{$this->dbname};        $this->__mongo_collection = $object_mongo->{$this->dbsession};    }    /**     *     * check for collection object     * @access public     * @param string $session_path     * @param string $session_name     * @return boolean     */    public function open($session_path, $session_name)    {        $result = false;        if ($this->__mongo_collection != NULL) {            $result = false;        }        return $result;    }    /**     *     * doing noting     * @access public     * @return boolean     */    public function close()    {        return true;    }    /**     *     * Reading session data based on id     * @access public     * @param string $session_id     * @return mixed     */    public function read($session_id)    {        $result = NULL;        $expiry = time();        $query['_id'] = $session_id;        $query['expiry'] = array('$gte' => $expiry);        $result = $this->__mongo_collection->findone($query);        if ($result) {            $this->__current_session = $result;        }        return $result['data'];    }    /**     *     * Writing session data     * @access public     * @param string $session_id     * @param mixed $data     * @return boolean     */    public function write($session_id, $data)    {        $result = true;        $expiry = $this->__getExpriry();        $session_data = array();        if (empty($this->__current_session)) {            $session_id = $session_id;            $session_data['_id'] = $session_id;            $session_data['data'] = $data;            $session_data['expiry'] = $expiry;        } else {            $session_data = (array)$this->__current_session;            $session_data['data'] = $data;            $session_data['expiry'] = $expiry;        }        $query['_id'] = $session_id;        $record = $this->__mongo_collection->findOne($query);        if ($record == null) {            $this->__mongo_collection->insert($session_data);        } else {            $record['data'] = $data;            $record['expiry'] = $expiry;            $this->__mongo_collection->save($record);        }        return true;    }    /**     *     * remove session data     * @access public     * @param string $session_id     * @return boolean     */    public function destroy($session_id)    {        $query['_id'] = $session_id;        $this->__mongo_collection->remove($query, true);        return true;    }    /**     *     * Garbage collection     * @access public     * @return boolean     */    public function gc()    {        $query = array();        $query['expiry'] = array(':lt' => time());        $this->__mongo_collection->remove($query, array('justOne' => false));        return true;    }    /**     * get expiry     * @access private     * @return int     */    private function __getExpriry()    {        return time() + self::MONGO_EXPIRY;    }}

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 国产资源在线免费观看 | 亚洲91精品 | 黄色片免费在线 | 亚洲一区二区三区在线免费观看 | 欧美三级欧美成人高清www | 精品国产一区三区 | 99影视在线视频免费观看 | 亚洲片在线 | 99视频网址 | 99精品视频在线导航 | 亚洲成人在线免费 | 久久亚洲美女视频 | 欧美日韩国产成人在线 | 国产精品性夜天天视频 | 激情亚洲一区二区三区 | 久久精品2019中文字幕 | 久久精品日产高清版的功能介绍 | 成人在线观看一区二区三区 | 久草在线观看资源 | 爱射av| 麻豆视频在线观看 | 成人福利视频在 | 久草在线视频中文 | 中文字幕在线日韩 | 亚洲综合视频网 | 精品一区二区三区在线观看视频 | 成人福利在线免费观看 | 在线成人免费观看视频 | 成人羞羞在线观看网站 | 黑人日比视频 | 国产91丝袜在线播放 | 越南一级黄色片 | a免费视频| 欧美中文字幕一区二区三区亚洲 | 毛片久久 | 中国女警察一级毛片视频 | 27xxoo无遮挡动态视频 | 国产男女爽爽爽爽爽免费视频 | 免费啪视频在线观看 | 亚洲天堂在线电影 | 欧美三级短视频 |