Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何计算每个视频的唯一视图_Php_Mysql_Zend Framework_Session Variables - Fatal编程技术网

Php 如何计算每个视频的唯一视图

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

应用程序是在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 = $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)