2017-02-15 4 views
0

Заявка написана на 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); 
    } 

} 

Это работает, однако, не в правильном направлении. После посещения определенных просмотров видео повышается (после обновления сайта нет), после перехода на другой вид также растет (после обновления сайта нет), но после возвращения к первому они снова поднимаются (они не должны).

Любая помощь приветствуется.

+0

Почему вы сохраняете мнения в сеансе? – Naincy

+0

действительно сеансы не подходят для этого, вам нужна таблица «view», где вы храните видео_ид, ip, datetime .., когда вы можете использовать этот запрос для выбора уникальных просмотров (уникальный ip) для каждого видео 'SELECT video_id, COUNT (DISTINCT ip) FROM view GROUP BY video_id ORDER BY video_id' –

ответ

1

Сессии - это не лучшее решение. Я бы рекомендовал вам регистрировать IP-адрес и создавать блокирующие файлы cookie, чтобы избежать записи повторяющихся просмотров.

Запись в IP-адрес: Это хороший способ избежать регистрации нескольких видов. Все, что вам нужно, - поместить запись в базу данных, как только зритель закончит просмотр видео (или что бы вы ни считали просмотренным), и в следующий раз проверьте, существует ли запись в нашей базе данных.

Блокировка файлов cookie: Вы также можете поместить блокирующие куки в свои браузеры. Это довольно эффективно, чтобы избежать записи нескольких видов. Вам нужно отправить файл cookie, когда зритель смотрит видео и проверяет, существует ли файл cookie во второй попытке.

По-моему, Для этого достаточно регистрации IP-адресов. Если ваш сайт включает систему членства, вы можете просто реализовать регистрацию IP-адресов (но вместо IP-адресов вы регистрируете там user_id).

Смежные вопросы