87

我有一个在 Flash 播放器中播放 mp3 的网站。如果用户单击“播放”,Flash 播放器会自动下载 mp3 并开始播放。

是否有一种简单的方法可以跟踪特定歌曲剪辑(或任何二进制文件)已下载了多少次?


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

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

如果是前者,您将需要能够跟踪 Web 服务器日志本身并做出区分的东西。我的托管计划附带 Webalizer,它很好地做到了这一点。

这是一个javascript代码,可以回答这个问题。

但是,很高兴知道如何使用其他方法(无需切换主机)来跟踪下载。

4

8 回答 8

42

有趣的是我两天前为我所有的音乐写了一个 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

如果您正在使用需要 mp3 文件或其他文件的实际链接的 JavaScript 或 Flash 播放器(例如 JW 播放器),您可以附加文本“&type=.mp3”,以便最终链接变为:“www.mp3”。 example.com/xfer.php?file=34842ffjfjxfh&type=.mp3"。这样看起来它以 mp3 扩展名结尾而不影响文件链接。

于 2008-08-01T17:33:58.750 回答
30

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

于 2008-08-01T17:51:55.407 回答
26

使用 bash:

grep mp3 /var/log/httpd/access_log | wc
于 2009-10-02T02:12:55.877 回答
14

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

于 2008-10-12T09:10:45.970 回答
13

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

于 2008-08-01T17:42:04.723 回答
7

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

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

如果是前者,您将需要能够跟踪 Web 服务器日志本身并做出区分的东西。我的托管计划带有 webalizer,它很好地做到了这一点。

于 2008-08-01T17:24:24.290 回答
4

你的音乐库有数据库吗?如果在下载 mp3 时运行任何服务器代码,那么您可以在那里添加额外的代码以增加播放次数。您还可以让 javascript 发出第二个请求来增加播放次数,但这可能会导致人/机器人错误地增加次数。

我曾经在一家互联网广播网站工作,我们使用单独的表格来跟踪每首歌曲的播放时间。我们的流由运行 icecast 的 perl 脚本提供支持,因此每次新曲目开始播放时我们都会触发数据库请求。然后为了计算播放次数,我们将运行一个查询来计算一首歌曲的 id 在播放日志中出现的次数。

于 2008-09-04T18:44:22.260 回答
4

我在使用 AWSStats / 阅读 Web 服务器日志等问题时遇到的问题是,大型下载通常可以拆分为日志中的数据块。这使得协调下载的确切数量变得非常困难。

我建议使用 Google Analytics Event Tracking,因为每次点击下载链接都会注册一次。

于 2016-06-09T09:38:50.137 回答