Yii MVC を使用して、ユーザーがまだ自分の Web ページにいる時間を知りたいので、ユーザーが最後にアクティブだった時間を保存する必要があります。
ユーザー テーブルのタイムスタンプ フィールドを更新できるフックはありますか?
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()