Php 如何在Yii中超时会话状态变量?

Php 如何在Yii中超时会话状态变量?,php,session,yii,Php,Session,Yii,我在用户标识类中创建一个状态变量,并在控制器中的一个操作中使用。在使用之前,我想检查状态变量是否存在。i、 e 在userIdentity类中: Yii::app()->user->setState('pictures', array());//Want this variable to die after 5 mins 在我的控制器操作中: if(isset(Yii::app()->user->pictures)) { //do what I want if st

我在用户标识类中创建一个状态变量,并在控制器中的一个操作中使用。在使用之前,我想检查状态变量是否存在。i、 e

在userIdentity类中:

Yii::app()->user->setState('pictures', array());//Want this variable to die after 5 mins
在我的控制器操作中:

if(isset(Yii::app()->user->pictures))
{

 //do what I want if state variable picture is set
}
有没有办法为会话状态变量设置超时? 我知道我们可以在配置文件中提供会话超时,但这将注销用户,这不是我想要的。我只想在5分钟后取消设置/销毁状态变量“pictures”


有没有办法在Yii中做到这一点?

据我所知,Yii中没有这样的内置机制,所以

成功登录时:

Yii::app()->user->setState('pictures', array());
Yii::app()->user->setState('logged_time', microtime(true));
在每次请求之前

if (Yii::app()->user->hasState('logged_time') 
&& (microtime(true) - Yii::app()->user->logged_time > 300)) {
    Yii::app()->user->setState('pictures', null); // unset pictures state
    Yii::app()->user->setState('logged_time', null); // unset logged_time if necessary
}