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

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

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


является ли ссылка play ссылкой на фактическую mp3 файл или код JavaScript что всплывает игрок?

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

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

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

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

8 ответов


самое смешное, что я написал медиа-галерею php для всей моей музыки 2 дня назад. У меня была похожая проблема. Я использую http://musicplayer.sourceforge.net/ для игрока. И плейлист построен через 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 player (например, JW player), который требует, чтобы фактическая ссылка была mp3-файлом или чем угодно, вы можете добавить текст "&type=.mp3 " таким образом, final linke становится чем - то вроде: "www.example.com/xfer.php?file=34842ffjfjxfh&type=.mp3". Таким образом, похоже, что он заканчивается расширением mp3, не затрагивая ссылку на файл.


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


использовать bash:

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

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


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


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

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

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


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

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


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

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