1

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

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

4

2 回答 2

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);
    }
于 2013-01-16T10:28:18.817 回答
1

您需要在 javascript 帮助下自己完成。在每个页面上放置向您的特定操作发送(ajax)请求并更新用户时间戳的javascript间隔函数。

总结一下:页面加载中的 Javascript:ajaxUpdateActivity( userId ); Yii 操作了解您的请求并更新需要更新的内容actionAjaxUpdateActivity()

于 2013-01-16T09:16:43.520 回答