我的Yii应用程序中有一个简单的页面跟踪系统。当用户查看单个项目时,我使用page_id
,session_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'),
}
任何指导都会有所帮助。
由于
强尼
答案 0 :(得分:3)
由于HTTP是无状态协议,因此我们无法确定用户何时离开页面。但有两种方法可以做到这一点。
Javascript方法:
用户离开页面时会触发事件“onbeforeunload”。您可以查找该事件,然后使用$ .post()或$ .ajax()执行一项操作,该操作将更新当前$time_ended
的{{1}}。
Yii方法(代码):服务器端可以有一个脚本来检查每个会话。它将检查如果session_id
的最后一次请求是session_id
,那么我们可以将上次记录设置为x_second
我认为这些都很有用。