Пожалуй напишу небольшой пост про недавнее нововведение на
Давно была идея сделать онлайн просмотр на сайте. Даже есть рабочий прототип, но так не смогли определиться в каком виде все-таки его оформить чтобы было удобно. В общем решили сделать это путем добавления видео прямо в релиз.
Видео берется из VK. Собственно встал вопрос о логах/просмотрах. Я люблю логи и стараюсь их делать везде где нужно и не нужно 🙂
В данном случае мне помог плагин
С вопросом когда писать лог разобрались, дальше вопрос «как?«.
А тут все очень просто — AJAX, пару строк говнокода для ajax обработчика и вот статистика уже лежит в базе и ждет пока её кто-нибудь прочитает.
А теперь перейдем ближе к телу(функции) 🙂
Вызов функции из ЛайтБокса
1 |
data-lyte-options="afterStart:video_view" |
Функция для отправки данных на ajax обработчик
1 2 3 4 5 6 7 8 9 10 |
function video_view() { $.ajax({ url: encodeURI("./ajax.php"), cache: !1, type: 'post', data: {video: $("input[name=video]").val(), uid: $("input[name=uid]").val()}, dataType: 'json', success: function(data) {} }); } |
А вот и сам обработчик ajax.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?php $config = array( 'hostname' => 'localhost', 'username' => 'root', 'password' => 'root', 'dbname' => 'database' ); if( !mysql_connect($config['hostname'], $config['username'], $config['password']) ) { exit(); } if( !mysql_select_db($config['dbname']) ) { exit(); } mysql_query("SET NAMES 'utf8'"); Header("Cache-Control: no-cache, must-revalidate"); Header("Pragma: no-cache"); Header("Content-Type: text/javascript; charset=utf-8"); $video = (int)$_REQUEST["video"]; $uid = (int)$_REQUEST["uid"]; if(empty($uid)) { $uid = $_SERVER['REMOTE_ADDR']; } if(empty($video)) { echo "0"; } else { mysql_query("INSERT INTO `video_views` (`uid`, `video`, `time`) VALUES ('{$uid}', '{$video}', '" . time() . "')"); echo "1"; } ?> |
Теперь немножко про сами логи. Что же мы записываем в базу?
1 2 3 4 5 6 7 8 |
CREATE TABLE IF NOT EXISTS `video_views` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` varchar(11) NOT NULL DEFAULT '0', `video` int(11) NOT NULL, `time` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_view` (`uid`,`video`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; |
Пишем мы туда
идентификатор пользователя — ID(если авторизирован) или IP(если гость)
ID видео/релиза — integer
Время просмотра — UNIX timestamp
IP записываем для гостей потому что просмотр разрешен всем, даже без регистрации
И буквально пару слов про уникальность дабы не плодить овер9000 просмотров, был создан уникальный индекс в таблице состоящий из полей video и uid, что сводит статистику к более точным показателям.
За 5 дней с момента запуска набралось порядка 1000 просмотров. Судя по статистике «старички» которые уже были зарегистрированы предпочитают релизы скачивать, а не созерцать в онлайне.
Ах да еще, чтобы логи были не просто так добавил в профиль информацию что человек смотрел(опять же для авторизированных пользователей) 🙂
Еще пару скриншотов: