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


Clearing cache if PHP/Yii framework session have expired

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

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

对于具有缓存项目的给定用户 ID,我如何知道其会话已过期?

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

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/