我有一个用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/