如何使用钩子跟踪上次用户活动?

时间:2013-01-16 08:31:05

标签: php yii

使用Yii MVC,我想知道用户何时仍在我的网页上,所以我需要存储用户上次活动的时间。

是否有可以更新用户表中的时间戳字段的挂钩?

2 个答案:

答案 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()