0

私の Yii アプリには単純なページ追跡システムがあります。ユーザーが個々のアイテムを表示すると、DB を , , で更新page_idsession_idますtime。私もtime_ended列を持っていますが、このフィールドを更新する最も簡単な方法は何でしょうか?

現在、次のように非常に単純です。

public function actionView($id) { // View a single item

// Load item
$model = Item::model()->loadItem($id); 

// load viewed item model
$viewedPage = new ViewedItem;
// set attributes
$viewedPage->page_id = $model->id;
$viewedPage->session_id = Yii::app()->session->sessionId;
$viewedPage->time_started = new CDbExpression('NOW()'); 
$viewedPage->save();

$this->render('view', array(
        'model' => $this->loadModel($id, 'Item'),
}

どんなガイダンスも役に立ちます。

ありがとう

ジョニー

4

1 に答える 1

3

HTTP はステートレス プロトコルであるため、ユーザーがいつページを離れたかを確認することはできません。しかし、それを行うには2つの方法があります。

  1. Javascript メソッド: ユーザーがページを離れると、イベント「onbeforeunload」がトリガーされます。そのイベントを探して、 $.post() または $.ajax() を使用して$time_ended、その currentを更新するアクションを実行できsession_idます。

  2. Yii メソッド (コード): 各セッションをチェックするスクリプトがサーバー側にある場合があります。からの最後のリクエストsession_idx_second古い場合、最後に記録された時間を次のように設定できることを確認します$time_ended

どれも重宝すると思います。

于 2013-09-13T08:20:09.173 に答える