Заявка написана на 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);
}
}
Это работает, однако, не в правильном направлении. После посещения определенных просмотров видео повышается (после обновления сайта нет), после перехода на другой вид также растет (после обновления сайта нет), но после возвращения к первому они снова поднимаются (они не должны).
Любая помощь приветствуется.
Почему вы сохраняете мнения в сеансе? – Naincy
действительно сеансы не подходят для этого, вам нужна таблица «view», где вы храните видео_ид, ip, datetime .., когда вы можете использовать этот запрос для выбора уникальных просмотров (уникальный ip) для каждого видео 'SELECT video_id, COUNT (DISTINCT ip) FROM view GROUP BY video_id ORDER BY video_id' –