如果PHP / Yii框架会话已过期,则清除缓存

时间:2013-10-28 10:10:15

标签: php yii

我有一个使用PHP框架Yii构建的站点和一个用户搜索查询的缓存表。 我想在用户注销后立即清除此缓存,或者他们的会话已过期。我有一个关于每个搜索缓存项目的创建日期和时间的条目。

如果用户点击退出,这很容易。我只是清除他们的缓存。但我的问题是,如果他们没有点击退出按钮,我怎么知道会话是否已过期?我正在使用标准的Yii用户模型,会话不存储在db中但存储在文件中(我猜PHP标准会话正在处理这个问题)。

我如何知道已经缓存其会话已过期的项目的给定userId?

2 个答案:

答案 0 :(得分:2)

有关如何执行此操作的完整信息,请参阅此链接:

How do I expire a PHP session after 30 minutes?

答案 1 :(得分:0)

当用户登录时,在全局范围内设置会话,如下所示:

Yii::app()->session['isLoggedIn'] = true;

通过您的控制器,您可以检查用户是否已登录:

// Check If User Is Logged In
if (isset(Yii::app()->session['isLoggedIn']) && Yii::app()->session['isLoggedIn'])
{
    // welcome user
} else {
    // welcome guest
}

要将用户注销,请清除会话数据,如下所示:

Yii::app()->session['isLoggedIn'] = false;
// or
unset(Yii::app()->session['isLoggedIn']);

有关会话管理的更多信息:http://www.larryullman.com/2011/05/03/using-sessions-with-the-yii-framework/