如何跟踪文件下载

Grant 73 php apache logging analytics download

我有一个在flash播放器中播放mp3的网站.如果用户点击"播放",则Flash播放器会自动下载并开始播放.

有没有一种简单的方法可以跟踪特定歌曲片段(或任何二进制文件)的下载次数?


播放链接是指向实际mp3文件的链接还是弹出播放器的一些javascript代码?

如果是后者,您可以轻松地在其中添加自己的日志记录代码以跟踪其命中数.

如果是前者,您将需要能够跟踪Web服务器日志本身并进行区分的内容.我的托管计划附带webalizer,它做得很好.

这是javascript代码,所以答案.

但是,知道如何使用其他方法跟踪下载(没有切换主机)会很高兴.

w-ll.. 39

有趣的是我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",这样最终的linke就变成了这样的东西:"www .example.com的/ xfer.php?FILE = 34842ffjfjxfh&类型= .MP3" .这样看起来它以mp3扩展名结尾而不影响文件链接.

  • 此脚本中存在目录遍历漏洞!攻击者可以传入xfer.php?file = ../../../passwd或其他任何他们想要的东西!小心!!! (19认同)
  • 如果文件太大而且流量很高,这将会破坏服务器的内存限制.这是我自己经历过的事情. (6认同)

Tim Boland.. 29

使用您的httpd日志文件.安装http://awstats.sourceforge.net/


randomx.. 25

使用bash:

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


saint_groceo.. 13

您甚至可以设置Apache .htaccess指令,将*.mp3请求转换为dubayou正在使用的查询字符串.它可能是保持直接请求的优雅方式,并且仍然能够将日志功能整合到响应中.


用户甲.. 13

如果您的歌曲/二进制文件由apache提供,您可以轻松地访问access_log以查找下载次数.一个简单的post-logrotate脚本可以grep日志并在db中维护计数统计信息.这具有性能优势,因为它不在您的实时请求代码路径中.对离线统计等非关键性事项进行扩展是一个好主意,可以将您的网站扩展到大量用户.


Dillie-O.. 7

播放链接是指向实际mp3文件的链接还是弹出播放器的一些javascript代码?

如果是后者,您可以轻松地在其中添加自己的日志记录代码以跟踪其命中数.

如果是前者,您将需要能够跟踪Web服务器日志本身并进行区分的内容.我的托管计划附带webalizer,它做得很好.