1

Yii MVC を使用して、ユーザーがまだ自分の Web ページにいる時間を知りたいので、ユーザーが最後にアクティブだった時間を保存する必要があります。

ユーザー テーブルのタイムスタンプ フィールドを更新できるフックはありますか?

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 に答える