如何显示用户离开页面的时间

时间:2013-09-12 16:42:12

标签: yii

我的Yii应用程序中有一个简单的页面跟踪系统。当用户查看单个项目时,我使用page_idsession_idtime更新数据库。我也有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'),
}

任何指导都会有所帮助。

由于

强尼

1 个答案:

答案 0 :(得分:3)

由于HTTP是无状态协议,因此我们无法确定用户何时离开页面。但有两种方法可以做到这一点。

  1. Javascript方法: 用户离开页面时会触发事件“onbeforeunload”。您可以查找该事件,然后使用$ .post()或$ .ajax()执行一项操作,该操作将更新当前$time_ended的{​​{1}}。

  2. Yii方法(代码):服务器端可以有一个脚本来检查每个会话。它将检查如果session_id的最后一次请求是session_id,那么我们可以将上次记录设置为x_second

  3. 我认为这些都很有用。