使用Yii MVC,我想知道用户何时仍在我的网页上,所以我需要存储用户上次活动的时间。
是否有可以更新用户表中的时间戳字段的挂钩?
答案 0 :(得分:3)
我找到了答案,在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);
}
答案 1 :(得分:1)
您需要使用javascript帮助自行完成。 放上每个页面的javascript间隔函数,它将(ajax)请求发送到您的特定操作并更新用户时间戳。
总结:
页面加载时的Javascript:ajaxUpdateActivity( userId );
Yii操作了解您的请求并更新需要更新的内容actionAjaxUpdateActivity()