关于appserver的seesion问题

问题咨询 · xi_qing · 于 6年前 发布 · 1943 次阅读

在写购物车接口时,需要要上seesion来记录购物车当前购物车的ID,但是在做的时候发现不管怎么设置

\Yii::$app->user->enableSession = false;

都没有作用,而在Session的Service组件中是使用该设置来判断是否启用自定义的Session。

 public function init()
    {
        if(\Yii::$app->user->enableSession == true){
            $this->_session = new PhpSession; // phpsession
        }else {
            if ($this->storageEngine == 'mongodb') {
                $this->_session = new MongoDbSession;
            }else if ($this->storageEngine == 'mysqldb') {
                $this->_session = new MysqlDbSession;
            }else if ($this->storageEngine == 'redis') {
                $this->_session = new RedisSession;
            }
        }
    }

跟踪了一下代码,在执行AppserverTokenController之前就已经实例化了Session,所以不管怎么设置不启用PHP的session都不起作用。

共收到 1 条回复
Fecmall#16年前 0 个赞

我有点比较模糊你的问题:

你调用session , 使用的是 Yii::$app->serssion 组件, 还是fecshop的 Yii::$service->session 服务 ,如果使用Yii的session组件,这里的设置是没有作用的。只有使用fecshop的session services才有作用。 采用使用 MysqlDbSession。

另外,\Yii::$app->user->enableSession 的设置只是针对Yii2 session组件,并不代表关闭Yii::$app->session, 但是fecshop的session services,依据这个值,来进行选择使用哪个作为存储。

这里你不要搞混了,fecshop session services里面的 MysqlDbSession ,仅仅实现了一个类似session的功能,不是真正意义上的session, 和php session存储到mysql的方式,不是一回事。

不知道是否解决了你的问题。

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics