Php 如何计算每个视频的唯一视图
应用程序是在Zend Framework 1.12中编写的。 我的视频在Php 如何计算每个视频的唯一视图,php,mysql,zend-framework,session-variables,Php,Mysql,Zend Framework,Session Variables,应用程序是在Zend Framework 1.12中编写的。 我的视频在url下提供: test.com/videos/video/id/1 test.com/videos/video/id/2 test.com/videos/video/id/3 ... 其中,数字是从MySQL DB生成的唯一参数。 我想计算每个视频的浏览量(唯一) 我在videoscocontroller中的视频操作如下所示: public function videoAction() { $video_id
url
下提供:
test.com/videos/video/id/1
test.com/videos/video/id/2
test.com/videos/video/id/3
...
其中,数字是从MySQL DB生成的唯一参数。
我想计算每个视频的浏览量(唯一)
我在videoscocontroller
中的视频操作如下所示:
public function videoAction() {
$video_id = $this->_getParam('id', 0);
$hits = new Application_Model_DbTable_Hits();
$hit = $hits->fetchRow($hits->select()->where('belongs_to_video = ?', $video_id));
if (!isset($_SESSION['views']) || !($_SESSION['views'] == $video_id){
$_SESSION['views'] = $video_id;
$newViews = $hit->count + 1;
$data = array('count' => $newViews, );
$hits->update($data);
}
}
然而,它的工作方式并不正确。访问特定视频后,视图会上升(刷新站点后不会上升),访问另一个视频后,视图也会上升(刷新站点后不会上升),但返回第一个视频后,视图会再次上升(不应该上升)
感谢您的帮助。会话不是解决此问题的好方法。我建议您记录IP地址并创建阻止cookie,以避免记录重复的视图 IP地址日志记录:这是一种避免记录多个视图的好方法。只要观众看完视频(或任何你认为观看过的视频),你就需要在数据库中放入一条记录,下一次,检查数据库中是否存在该记录 阻止Cookies:您还可以将阻止Cookies放入您的浏览器中。这对于避免记录多个视图非常有效。当观众观看视频时,您需要发送cookie,并在第二次尝试时检查cookie是否存在
在我看来,IP地址日志记录就足够了。如果您的网站包含会员制,那么您可以简单地实现IP地址日志记录(但不是IP地址,而是在那里记录用户id)。为什么要在会话中保留视图?会话确实不适合这样做,您需要一个存储视频id、IP、datetime的表“视图”。。当您可以使用此查询选择每个视频的唯一视图(唯一ip)时
选择视频\u id,按视频\u id顺序按视频\u id从视图组中计数(不同ip)