Session Yii会话超时不工作

Session Yii会话超时不工作,session,yii,Session,Yii,与标题相同,在我的配置中: 'session' => array( 'class'=>'CHttpSession', 'timeout'=> 1200, 'autoStart'=>true, ), 在我的代码中: $ssKey = 'MY_SS_KEY'; if (isset(Yii::app()->session[$ssKey])) { $this->jobWithSession(); } else { $this->

与标题相同,在我的配置中:

'session' => array(
   'class'=>'CHttpSession',
   'timeout'=> 1200,
   'autoStart'=>true,
),
在我的代码中:

$ssKey = 'MY_SS_KEY';

if (isset(Yii::app()->session[$ssKey])) {
   $this->jobWithSession();
} else {
   $this->jobWithNotSession();
   Yii::app()->session[$ssKey] = 'ok';
}

第一次,它调用函数jobWithNotSession(),但超过1200秒(20分钟)后,它仍然调用函数jobWithNotSession,怎么了?有人能帮我吗?

您在这里使用了错误的功能。会话超时仅在调用php垃圾回收器时适用,这与每个页面视图都不一样。这与环境有关。所以这不是你想用的。只要不运行,会话仍然存在(即使已过期),并且用户仍保持登录状态

您想要的是“删除”autoLogin cookie,您可以通过控制其持续时间来执行此操作。
因此,基本上您需要更改的是-function的
duration
参数

要使Yii会话超时工作,应执行以下操作:

在protected/config/main.php中:

'components'=>array(
               'session' => array(
                  'class' => 'CDbHttpSession', //Set class to CDbHttpSession
                  'timeout' => 1800, //Any time, in seconds
                ),
              ),
1800是您的时间会话将处于活动状态的时间(以秒为单位)。 将类设置为CDbHttpSession非常重要