Как отслеживать загрузку файлов

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

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


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

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

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

Это код javascript, который отвечает на этот вопрос.

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

Ответ 1

Самое смешное, что я написал 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? файл = 34842ffjfjxfh и тип =.mp3". Таким образом, похоже, что он заканчивается расширением mp3, не затрагивая ссылку на файл.

Ответ 3

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

grep mp3 /var/log/httpd/access_log | wc

Ответ 4

Если ваша песня/бинарный файл была подана apache, вы можете легко grep access_log узнать количество загрузок. Простой post-logrotate script может grep вести журналы и поддерживать статистику count в db. Это имеет преимущество в производительности, поскольку вы не находитесь в своем коде кода запроса в реальном времени. Выполнение некритических вещей, таких как статистика в автономном режиме, является хорошей идеей масштабирования вашего сайта для большого числа пользователей.

Ответ 5

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

Ответ 6

Является ли ссылка для воспроизведения ссылкой на фактический mp3 файл или на какой-то код javascript, который выдает плеер?

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

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

Ответ 7

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

Я работал на сайте интернет-радио, и мы использовали отдельные таблицы для отслеживания времени воспроизведения каждой песни. Наши потоки были задействованы perl script с запуском icecast, поэтому мы запускали запрос базы данных каждый раз, когда начинался новый трек. Затем, чтобы вычислить счетчик пьес, мы выполнили запрос, чтобы подсчитать, сколько раз был записан идентификатор песни в журнале воспроизведения.

Ответ 8

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

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