Php Yii框架中的HttpSession会话超时不起作用
我正在用Yii创建一个web应用程序。如果用户空闲30分钟,我尝试执行sessiontimeout。之后,他应该再次登录。。但这是行不通的。我正在使用CHttpSession。但是,如果我使用CDbHttpSession而不是CHttpSession,则效果良好 这是我的密码Php Yii框架中的HttpSession会话超时不起作用,php,session,yii,yii-components,Php,Session,Yii,Yii Components,我正在用Yii创建一个web应用程序。如果用户空闲30分钟,我尝试执行sessiontimeout。之后,他应该再次登录。。但这是行不通的。我正在使用CHttpSession。但是,如果我使用CDbHttpSession而不是CHttpSession,则效果良好 这是我的密码 'user' => array( 'class' => 'WebUser', 'loginUrl' => array('site/loginaccount'),
'user' => array(
'class' => 'WebUser',
'loginUrl' => array('site/loginaccount'),
'allowAutoLogin' => true,
),
// uncomment the following to enable URLs in path-format
'session' => array(
'class'=>'CHttpSession',
'timeout'=>$params['session_timeout'],
'autoStart'=>true,
),
还有什么可以让这项工作在CHttpSession中发挥作用的吗?由于某些原因,我无法在web应用程序中使用CDbHttpSession。protected/config/main.php:定义会话超时
$sessionTimeout = 5; // 5 secondes
return array(
'params'=>array(
'session_timeout'=> $sessionTimeout,
);
'components'=>array(
'session' => array(
'class' => 'CDbHttpSession',
'timeout' => $sessionTimeout,
),
),
);
protected/views/layout/main.php:定义刷新
<html>
<head>
<?php if (!Yii::app()->user->isGuest) {?>
<meta http-equiv="refresh" content="<?php echo Yii::app()->params['session_timeout'];?>;"/>
<?php }?>
</head>
<body>
…
</body>
</html>
protected/config/main.php:定义会话超时
$sessionTimeout = 5; // 5 secondes
return array(
'params'=>array(
'session_timeout'=> $sessionTimeout,
);
'components'=>array(
'session' => array(
'class' => 'CDbHttpSession',
'timeout' => $sessionTimeout,
),
),
);
protected/views/layout/main.php:定义刷新
<html>
<head>
<?php if (!Yii::app()->user->isGuest) {?>
<meta http-equiv="refresh" content="<?php echo Yii::app()->params['session_timeout'];?>;"/>
<?php }?>
</head>
<body>
…
</body>
</html>
如果希望用户在30分钟后自动注销,请尝试:
'user' => array(
'class' => 'WebUser',
'loginUrl' => array('site/loginaccount'),
'allowAutoLogin' => true,
'authTimeout' => 1800
),
如果希望用户在30分钟后自动注销,请尝试:
'user' => array(
'class' => 'WebUser',
'loginUrl' => array('site/loginaccount'),
'allowAutoLogin' => true,
'authTimeout' => 1800
),
我已经阅读了CHTTP会话的源代码。这是PHP会话的总结。因此,HttpSession的机制与PHP会话相同
public function setTimeout($value)
{
ini_set('session.gc_maxlifetime',$value);
}
以上是超时设置器的代码。这只是PHP的ini设置的设置。根据,在maxlifetime之后,会话可能会被清理,但不确定
它的概率可以通过session.gc\u概率设置。默认值为1,表示1%。因此,您可以将其设置为100,使垃圾收集过程在每次运行脚本时都运行
将设置更改为
'session' => array(
'class'=>'CHttpSession',
'timeout'=>$params['session_timeout'],
'autoStart'=>true,
'gCProbability' => 100,
),
希望有帮助。我已经阅读了CHttpSession的源代码。这是PHP会话的总结。因此,HttpSession的机制与PHP会话相同
public function setTimeout($value)
{
ini_set('session.gc_maxlifetime',$value);
}
return array('components'=>array(
'session'=>array(
'timeout' => 1800
),
),
);
以上是超时设置器的代码。这只是PHP的ini设置的设置。根据,在maxlifetime之后,会话可能会被清理,但不确定
它的概率可以通过session.gc\u概率设置。默认值为1,表示1%。因此,您可以将其设置为100,使垃圾收集过程在每次运行脚本时都运行
将设置更改为
'session' => array(
'class'=>'CHttpSession',
'timeout'=>$params['session_timeout'],
'autoStart'=>true,
'gCProbability' => 100,
),
希望有帮助。我知道它对CDBHTTP会话有效。我在找你的工作。。有什么想法吗?我知道它对CDBHTTP会话有效。我在找你的工作。。有什么想法吗?请,加一些解释请,加一些解释
return array('components'=>array(
'session'=>array(
'timeout' => 1800
),
),
);