我有一个使用PHP框架Yii构建的站点和一个用户搜索查询的缓存表。 我想在用户注销后立即清除此缓存,或者他们的会话已过期。我有一个关于每个搜索缓存项目的创建日期和时间的条目。
如果用户点击退出,这很容易。我只是清除他们的缓存。但我的问题是,如果他们没有点击退出按钮,我怎么知道会话是否已过期?我正在使用标准的Yii用户模型,会话不存储在db中但存储在文件中(我猜PHP标准会话正在处理这个问题)。
我如何知道已经缓存其会话已过期的项目的给定userId?
答案 0 :(得分:2)
有关如何执行此操作的完整信息,请参阅此链接:
答案 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/