我有一个网站,播放MP3的Flash播放器。 如果用户点击“播放”的flash播放器会自动下载一个MP3,然后开始播放。
有一种简单的方法来跟踪了多少次特定的歌曲片段(或任何二进制文件)已经被下载?
是播放链接到实际的mp3文件或弹出一个球员一些JavaScript代码的链接?
如果是后者,你可以很容易地在里面添加自己的日志记录代码来跟踪点击它的数量。
如果是前者,你需要的东西,可以跟踪Web服务器日志本身并作出这样的区分。 我的托管计划带有Webalizer的,这很好地做到这一点。
它的JavaScript代码,这样回答说。
然而,这将是很好知道如何追踪透过其他方式下载(无需切换主机)。
有趣的是,我3天前写一个PHP媒体库为我所有的音乐。 我有一个类似的问题。 我使用http://musicplayer.sourceforge.net/玩家。 和播放列表是通过PHP构建。 所有音乐的要求去那里叫xfer.php脚本?文件= 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或需要实际的链接是一个MP3文件或任何一个flash播放器(JW播放器为例),可以追加文本“&类型= .MP3”所以最终临客变成类似:“WWW .example.com的/ xfer.php?FILE = 34842ffjfjxfh&类型= .MP3" 。 它看起来是这样喜欢它,而不会影响文件链接了MP3扩展名结尾。
使用你的httpd日志文件。 安装http://awstats.sourceforge.net/
使用bash:
grep mp3 /var/log/httpd/access_log | wc
如果你的歌声/二进制文件是由Apache的服务,您可以轻松地用grep的访问日志,找出下载的数量。 一个简单的日志轮播后脚本可以grep日志和维护一个数据库的数量统计。 这有通过在实际请求的代码路径不是性能优势。 做这样的统计离线非关键的事情之一就是扩展你的网站,大量的用户是个好主意。
你甚至可以建立一个Apache的.htaccess指令,* .MP3请求转换成查询字符串dubayou正在与。 这可能是保持直接的请求,并仍然能够滑流日志功能为响应一种优雅的方式。
是播放链接到实际的mp3文件或弹出一个球员一些JavaScript代码的链接?
如果是后者,你可以很容易地在里面添加自己的日志记录代码来跟踪点击它的数量。
如果是前者,你需要的东西,可以跟踪Web服务器日志本身并作出这样的区分。 我的托管计划带有Webalizer的,这很好地做到这一点。
是否有你的音乐库数据库? 如果是运行下载的MP3时,你可以在那里添加额外的代码将增加播放计数的任何服务器的代码。 您还可以让JavaScript通过递增播放计数第二个请求,但是这可能会导致人/机器人虚假递增计数。
我用来为互联网电台网站工作,我们使用不同的表来跟踪每首歌播放的时间。 我们的流被运行的Icecast Perl脚本驱动的,所以我们每一个新的轨道开始玩时触发一个数据库请求。 然后计算,我们将运行一个查询算一首歌的id有多少次是在播放日志播放计数。
我有东西像AWStats的问题/通过Web服务器日志阅读是大的下载往往可以在日志中的数据块被分割。 这使得协调下载的确切数字挺难的。
我建议在谷歌Analytics(分析) 事件跟踪 ,因为这将一个下载链接,每点击一次注册。