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非常重要