У меня есть веб-сайт, который воспроизводит mp3-файлы в флеш-плеере. Если пользователь нажимает «играть», проигрыватель автоматически загружает mp3 и начинает его воспроизводить.
Есть ли простой способ отслеживать, сколько раз был загружен конкретный клип для песни (или любой бинарный файл)?
Является ли ссылка ссылкой ссылкой на фактический mp3-файл или на какой-то код javascript, который выдает плеер?
Если последнее, вы можете легко добавить свой собственный код ведения журнала, чтобы отслеживать количество обращений к нему.
- Tailing Log File и запись результатов в новый файл
- Как сохранить историю обновлений записей в MySQL?
- PHP - Внедрить механизм журналирования для работы в нескольких классах
- @ оператор подавления ошибок и set_error_handler
- Фильтрация файла журнала с использованием COUNT, GROUP BY, ORDER BY MAX
Если первое, вам понадобится что-то, что может отслеживать сам журнал веб-сервера и делать это различие. Мой план хостинга поставляется с webalizer, который делает это красиво.
Это код javascript, так что ответы на это.
Однако было бы неплохо узнать, как отслеживать загрузки с помощью другого метода (без переключения хостов).
Самое забавное, что я написал флеш-галерею для всей своей музыки 2 дня назад. У меня была аналогичная проблема. Я использую http://musicplayer.sourceforge.net/ для игрока. и плейлисты строятся через php. весь музыкальный запрос отправит туда скрипт с именем xfer.php? file = WHATEVER
$filename = base64_url_decode($_REQUEST['file']); header("Cache-Control: public"); header("Content-Description: File Transfer"); 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 или флеш-плеер (например, JW-плеер), который требует, чтобы фактическая ссылка была файлом mp3 или любым другим, вы можете добавить текст «& type = .mp3», чтобы конечная ссылка стала чем-то вроде «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, вы можете легко grep access_log узнать количество загрузок. Простой скрипт post-logrotate может grep вести журналы и поддерживать статистику count в db. Это имеет преимущество в производительности, поскольку вы не находитесь в своем коде кода запроса в реальном времени. Выполнение некритических вещей, таких как статистика в автономном режиме, является хорошей идеей масштабирования вашего сайта для большого числа пользователей.
Вы даже можете настроить директиву Apache .htaccess, которая преобразует * .mp3 запросы в querystring, с которым работает dubayou. Это может быть изящный способ сохранить прямой запрос и по-прежнему иметь возможность выполнять функцию журнала slipstream в ответ.
Является ли ссылка ссылкой ссылкой на фактический mp3-файл или на какой-то код javascript, который выдает плеер?
Если последнее, вы можете легко добавить свой собственный код ведения журнала, чтобы отслеживать количество обращений к нему.
Если первое, вам понадобится что-то, что может отслеживать сам журнал веб-сервера и делать это различие. Мой план хостинга поставляется с webalizer, который делает это красиво.
Есть ли база данных для вашей музыкальной библиотеки? Если есть какой-либо код сервера, который запускается при загрузке mp3, вы можете добавить дополнительный код для увеличения количества воспроизведения. Вы также можете сделать javascript вторым запросом, чтобы увеличить количество воспроизведения, но это может привести к тому, что люди / роботы ошибочно увеличивают количество очков.
Раньше я работал на интернет-радио, и мы использовали отдельные таблицы, чтобы отслеживать время воспроизведения каждой песни. Наши потоки были созданы с помощью скрипта perl, запускающего icecast, поэтому мы запускали запрос базы данных каждый раз, когда начинался новый трек. Затем, чтобы вычислить счетчик пьес, мы будем запускать запрос, чтобы подсчитать, сколько раз был записан идентификатор песни в журнале воспроизведения.
Проблема, с которой я столкнулась с такими вещами, как AWStats / чтение через журналы веб-сервера, заключается в том, что большие загрузки часто можно разделить на куски данных в журналах. Это затрудняет согласование точного количества загрузок.
Я бы предложил отслеживать события Google Analytics, так как это будет регистрироваться один раз за клик по ссылке для загрузки.