如何跟踪文件下载
我有一个网站,播放MP3播放器中的MP3。 如果用户点击“播放”,Flash播放器会自动下载一个MP3并开始播放。
有一个简单的方法来跟踪一个特定的歌曲剪辑(或任何二进制文件)已被下载多less次?
播放链接是一个链接到实际的MP3文件或一些JavaScript代码,popup播放器?
如果是后者,你可以很容易地在那里添加你自己的日志代码来跟踪它的点击次数。
如果是前者,你需要一些可以跟踪Web服务器日志本身并做出区分的东西。 我的托pipe计划来自webalizer,这很好。
这是JavaScript代码,所以答案。
但是,知道如何使用其他方法跟踪下载(无需切换主机)将会很好。
有趣的是我2天前为我所有的音乐写了一个php媒体库。 我有一个类似的问题。 我使用http://musicplayer.sourceforge.net/为播放器。; 和playlis是通过PHP构build的。 所有的音乐请求去那里一个脚本叫做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或Flash播放器(例如JW播放器),要求实际的链接是一个MP3文件或任何,你可以追加文本“&type = .mp3”,所以最后的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服务的,你可以很容易的grep access_log找出下载的次数。 一个简单的后logrotate脚本可以grep日志和维护你的统计数据库。 由于不在您的实时请求代码path中,因此具有性能优势。 做不重要的事情,如统计离线是一个好主意,扩大您的网站大量的用户。
您甚至可以设置一个Apache .htaccess指令,将* .mp3请求转换为dubayou正在处理的查询string。 保持直接请求可能是一种优雅的方式,并且仍然能够将日志function融入到响应中。
播放链接是一个链接到实际的MP3文件或一些JavaScript代码,popup播放器?
如果是后者,你可以很容易地在那里添加你自己的日志代码来跟踪它的点击次数。
如果是前者,你需要一些可以跟踪Web服务器日志本身并做出区分的东西。 我的托pipe计划来自webalizer,这很好。
有音乐库的数据库吗? 如果在下载MP3时有任何服务器代码运行,那么您可以在其中添加额外的代码来增加播放次数。 您也可以让javascript再次请求增加游戏次数,但这可能会导致人/机器人错误地增加计数。
我曾经为一个互联网广播网站工作,我们用单独的表格来跟踪每首歌曲播放的时间。 我们的stream由一个运行icecast的perl脚本提供动力,所以我们每次开始播放一个新的音轨时就触发一个数据库请求。 然后为了计算播放次数,我们将运行一个查询来计算歌曲ID在播放日志中的次数。
AWStats /通过Web服务器日志读取的问题是,大量下载通常可以在日志中的数据块中拆分。 这使得下载的确切次数相当困难。
我build议Google Analytics(分析) 事件跟踪 ,因为每次点击下载链接时都会注册一次。