框架自带的session内存驱动有点老旧,自己抽刀改了个

浏览:573 发布日期:2015/02/01 分类:技术分享 关键字: session db 驱动
框架自带的session内存驱动只支持mysql,并且不支持mysqli或是pdo,没有与时俱进。自己撸了一个,利用框架内部库改的,应该支持数据库相关的配置吧。请大牛们看看能否这么用namespace Think\Session\Driver;

class Db {
    protected $lifeTime = '';
    protected $sessionTable = '';
    protected $hander = null;

    public function open($savePath, $sessName) {
        $this->lifeTime = C('SESSION_EXPIRE') ? C('SESSION_EXPIRE') : ini_get('session.gc_maxlifetime');
        $this->sessionTable = C('SESSION_TABLE') ? C('SESSION_TABLE') : C("DB_PREFIX") . "session";
        $this->hander = \Think\Db::getInstance();
        return true;
    }

    public function close() {
        $this->gc($this->lifeTime);
        $this->hander->close();
        return true;
    }

    public function read($sessID) {
        $res = $this->hander->query("SELECT data FROM " . $this->sessionTable . " WHERE id = '$sessID'   AND expire >" . time());
        if ($res) {
            return $res[0]['data'];
        }
        return '';
    }

    public function write($sessID, $sessData) {
        $expire = time() + $this->lifeTime;
         return $this->hander->execute("REPLACE INTO  " . $this->sessionTable . " (  id, expire, data)  VALUES( '$sessID', '$expire',  '$sessData')") ? true : false;
    }

    public function destroy($sessID) {
            return $this->hander->execute("DELETE FROM " . $this->sessionTable . " WHERE id = '$sessID'") ? true : false;
    }

    public function gc($sessMaxLifeTime) {
            return $this->hander->execute("DELETE FROM " . $this->sessionTable . " WHERE expire < " . time()) ? true : false;
    }

}
最佳答案
评论( 相关
后面还有条评论,点击查看>>