我有一个在flash播放器中播放mp3的网站。如果用户点击“播放”,则Flash播放器会自动下载并开始播放。
是否有一种简单的方法可以跟踪特定歌曲片段(或任何二进制文件)的下载次数?
播放链接是否为实际链接 mp3文件或一些JavaScript代码 弹出一个玩家?
如果是后者,您可以轻松添加您的 在那里拥有自己的日志代码来跟踪 命中数。
如果是前者,你需要一些东西 可以跟踪Web服务器日志 本身并做出这种区分。我的 主机计划附带webalizer, 这很好。
这是javascript代码,所以答案就是这样。
但是,知道如何使用其他方法跟踪下载(没有切换主机)会很高兴。
答案 0 :(得分:38)
有趣的是我2天前为我的所有音乐写了一个php媒体库。我遇到了类似的问题。我正在为玩家使用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扩展名结尾而不影响文件链接。
答案 1 :(得分:28)
使用您的httpd日志文件。安装http://awstats.sourceforge.net/
答案 2 :(得分:25)
使用bash:
grep mp3 /var/log/httpd/access_log | wc
答案 3 :(得分:13)
如果您的歌曲/二进制文件由apache提供,您可以轻松地访问access_log以查找下载次数。一个简单的post-logrotate脚本可以grep日志并在db中维护计数统计信息。 这具有性能优势,因为它不在您的实时请求代码路径中。执行离线统计等非关键操作是将网站扩展到大量用户的好主意。
答案 4 :(得分:12)
你甚至可以设置一个Apache .htaccess指令,将* .mp3请求转换为dubayou正在使用的查询字符串。它可能是保持直接请求的优雅方式,并且仍然能够将日志功能整合到响应中。
答案 5 :(得分:6)
播放链接是指向实际mp3文件的链接还是弹出播放器的某些javascript代码?
如果是后者,您可以轻松地在其中添加自己的日志记录代码,以跟踪其中的点击次数。
如果是前者,您需要能够跟踪Web服务器日志并进行区分的内容。我的托管计划附带了webalizer,它做得非常好。
答案 6 :(得分:3)
您的音乐库是否有数据库?如果在下载mp3时有任何服务器代码运行,那么您可以在那里添加额外的代码来增加播放次数。您也可以让javascript发出第二个请求以增加播放次数,但这可能会导致人/机器人错误地增加计数。
我曾经在互联网广播网站工作,我们使用单独的表来跟踪每首歌曲播放的时间。我们的流由运行icecast的perl脚本提供支持,因此每次新轨道开始播放时我们都会触发数据库请求。然后,为了计算播放次数,我们将运行一个查询来计算歌曲ID在播放日志中的次数。
答案 7 :(得分:3)
我使用AWStats /通过Web服务器日志读取的问题是,大量下载通常可以在日志中的数据块中拆分。这使得确切地协调下载的确切数量。
我建议使用Google Analytics Event Tracking,因为这会在每次点击下载链接时注册一次。