使用 Yii MVC,我想知道用户何时仍在我的网页上,所以我需要存储用户上次活动的时间。
是否有一个钩子可以更新用户表中的时间戳字段?
我找到了答案,在 components/Controller.php 中添加以下代码
该代码使用afterAction
钩子,因此每次发生操作时都会触发更新。
public function keepAlive() {
if (!Yii::app()->user->isGuest) {
User::model()->updateByPk(
Yii::app()->user->id, array('lastactive' => date('Y-m-d H:i:s')) //CURRENT_TIMESTAMP..this working fine
);
}
}
// Runs after any action in controller
public function afterAction($action) {
self::keepAlive();
parent::afterAction($action);
}
您需要在 javascript 帮助下自己完成。在每个页面上放置向您的特定操作发送(ajax)请求并更新用户时间戳的javascript间隔函数。
总结一下:页面加载中的 Javascript:ajaxUpdateActivity( userId );
Yii 操作了解您的请求并更新需要更新的内容actionAjaxUpdateActivity()