Как я могу отслеживать загрузку файлов - PullRequest
74 голосов
/ 01 августа 2008

У меня есть сайт, который воспроизводит mp3-файлы во флеш-плеере. Если пользователь нажимает кнопку «воспроизведение», флэш-плеер автоматически загружает mp3 и начинает воспроизводить его.

Существует ли простой способ отследить, сколько раз был загружен определенный клип (или любой бинарный файл)?


Является ли ссылка на воспроизведение ссылкой на актуальный mp3-файл или какой-либо код JavaScript что всплывает в плеере?

Если последнее, вы можете легко добавить свой собственный код регистрации там, чтобы отслеживать количество попаданий к нему.

Если первое, вам нужно что-то который может отслеживать журнал веб-сервера Сам и сделать это различие. мой Хостинг-план поставляется с Webalizer, который делает это красиво.

Это код JavaScript, так что он отвечает на это.

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

Ответы [ 8 ]

38 голосов
/ 01 августа 2008

Самое смешное, что я написал медиа-галерею php для всей моей музыки 2 дня назад. У меня была похожая проблема. Я использую http://musicplayer.sourceforge.net/ для игрока. И плейлист построен через php. Все музыкальные запросы отправляются туда скриптом с именем xfer.php? File = WHATEVER

$filename = base64_url_decode($_REQUEST['file']);
header("Cache-Control: public");
header('Content-disposition: attachment; filename='.basename($filename));
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. filesize($filename));

//  Put either file counting code here. either a db or static files

//

readfile($filename);  //and spit the user the file


function base64_url_decode($input) {
    return base64_decode(strtr($input, '-_,', '+/='));
}

А при вызове файлов используйте что-то вроде:

function base64_url_encode($input) {
     return strtr(base64_encode($input), '+/=', '-_,');
}

http://us.php.net/manual/en/function.base64-encode.php

Если вы используете какой-либо javascript или flash-проигрыватель (например, JW-проигрыватель), для которого требуется, чтобы фактическая ссылка представляла собой файл mp3 или что-то еще, вы можете добавить текст «& type = .mp3», чтобы конечный линк стал примерно : "Www.example.com/xfer.php?file=34842ffjfjxfh&type=.mp3". Таким образом, он выглядит так, как будто он заканчивается расширением mp3, не затрагивая ссылку на файл.

28 голосов
/ 01 августа 2008

Используйте ваши файлы журнала httpd. Установить http://awstats.sourceforge.net/

25 голосов
/ 02 октября 2009

Используйте bash:

grep mp3 /var/log/httpd/access_log | wc
13 голосов
/ 12 октября 2008

Если ваша песня / бинарный файл обслуживался apache, вы можете легко выполнить команду access_log, чтобы узнать количество загрузок. Простой сценарий после logrotate может создавать журналы и вести статистику вашего счета в БД. Это дает преимущество в производительности, поскольку отсутствует путь к действующему коду запроса. Делать некритичные вещи, такие как статистика в автономном режиме, - это хорошая идея для масштабирования вашего сайта для большого количества пользователей.

12 голосов
/ 01 августа 2008

Вы даже можете установить директиву Apache .htaccess, которая преобразует запросы * .mp3 в строку запроса, с которой вы работаете. Это может быть элегантный способ сохранить прямой запрос и при этом иметь возможность включить функцию регистрации потока в ответ.

6 голосов
/ 01 августа 2008

Ссылка воспроизведения - это ссылка на реальный mp3-файл или на какой-нибудь код JavaScript, который появляется в плеере?

Если последнее, вы можете легко добавить свой собственный код регистрации, чтобы отследить количество попаданий в него.

Если первое, вам нужно что-то, что может отслеживать сам журнал веб-сервера и делать это различие. Мой хостинг-план идет с webalizer, который делает это красиво.

3 голосов
/ 09 июня 2016

Проблема, с которой я столкнулся в таких вещах, как AWStats / чтение журналов веб-сервера, заключается в том, что большие загрузки часто могут быть разделены на фрагменты данных в журналах. Это затрудняет согласование точного количества загрузок.

Я бы предложил Google Analytics Отслеживание событий , так как это будет регистрироваться один раз за клик по ссылке для скачивания.

3 голосов
/ 04 сентября 2008

Есть ли база данных для вашей музыкальной библиотеки? Если есть какой-либо серверный код, который запускается при загрузке mp3, вы можете добавить туда дополнительный код, чтобы увеличить счетчик воспроизведения. Вы также можете сделать так, чтобы javascript сделал второй запрос на увеличение количества игр, но это может привести к ложному увеличению количества людей / роботов.

Раньше я работал на сайте интернет-радио, и мы использовали отдельные столы для отслеживания времени проигрывания каждой песни. Наши потоки работали на скрипте Perl, запускающем Icecast, поэтому мы запускали запрос к базе данных каждый раз, когда начинал воспроизводиться новый трек. Затем, чтобы вычислить счетчик воспроизведения, мы запустим запрос, чтобы подсчитать, сколько раз идентификатор песни был в журнале воспроизведения.

...