sabersma

sabersma

这家伙有点懒,还没写个性签名!

  • 财富值85
  • 威望值0
  • 总积分95

个人信息

  • 2017-10-09 已签到
    连续签到1天,获得了5个金钱
  • 2016-04-22 已签到
    连续签到1天,获得了5个金钱
  • 2016-02-25 已签到
    连续签到1天,获得了5个金钱
  • 2016-01-11 已签到
    连续签到1天,获得了5个金钱
  • 2015-12-16 已签到
    连续签到2天,获得了10个金钱
  • 2015-12-15 已签到
    连续签到1天,获得了5个金钱
  • 2015-11-30 已签到
    连续签到1天,获得了5个金钱
  • 2015-11-27 已签到
    连续签到1天,获得了5个金钱
  • 回复了 的回答

    flash内容存储在session中, 和debug module没什么关系.

    addFlash('a', 'b') 之后, 再getFlash('a')之后, 是可以销毁这条消息.

    但是 : 是在下次请求中销毁, 本次请求的后续处理中还存在.

    大概找到原因了。。推测是因为Yii入口脚本我使用session_start()开启session而不是使用Yii::$app->session->open()方式开启,

    public function open()
    {
        if ($this->getIsActive()) {
            return;
        }
        $this->registerSessionHandler();
        $this->setCookieParamsInternal();
        @session_start();
        if ($this->getIsActive()) {
            Yii::info('Session started', __METHOD__);
            $this->updateFlashCounters();
        } else {
            $error = error_get_last();
            $message = isset($error['message']) ? $error['message'] : 'Failed to start session.';
            Yii::error($message, __METHOD__);
        }
    }
    

    所以导致open()在调用时,判断到session已开启直接返回,没有执行后续的updateFlashCounters()方法进行清理,感觉这里的代码,,嗯。有点不太。。机智?

  • 回复了 的回答

    flash内容存储在session中, 和debug module没什么关系.

    addFlash('a', 'b') 之后, 再getFlash('a')之后, 是可以销毁这条消息.

    但是 : 是在下次请求中销毁, 本次请求的后续处理中还存在.

    没有用composer装,刚才看了一下本地的源码和git上的源码,一致的,在源码里加了测试code,看起来,updateFlashCounters() 没有被调用。。。

职场新人 等级规则
95/100
资料完整度
10/100
用户活跃度
0/100

Ta的关注

0

Ta的粉丝

0

Ta的访客

1