如何计算每个视频的独立观看次数

How to count each video unique views

应用程序是在 Zend Framework 1.12 中编写的。 我的视频在 url:

下可用
test.com/videos/video/id/1
test.com/videos/video/id/2
test.com/videos/video/id/3
...

其中数字是从 MySQL 数据库生成的唯一参数。 我想计算每个视频的观看次数(唯一)。

我在 VideosController 中的视频操作看起来像:

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 地址记录: 这是避免记录多个视图的好方法。您只需要在观众看完视频(或您认为已观看的任何内容)后立即在数据库中添加一条记录,并在下一次检查我们的数据库中是否存在该记录。

阻止 Cookie:您还可以在观众的浏览器中放置阻止 cookie。这对于避免记录多个视图相当有效。您需要在观看者观看视频时发送一个 cookie,并在第二次尝试时检查该 cookie 是否存在。

在我看来,IP 地址记录 就足够了。如果您的网站包含会员系统,那么您可以简单地实施 IP 地址记录(但您在此处记录 user_ids 而不是 IP 地址)。