如何获取每周 Apache 下载次数

如何获取每周 Apache 下载次数

(如果合适,请转到 serverfault - 对我来说这似乎更多的是应用程序问题)

我有一个 PHP 服务器,用于托管播客的 MP3 文件。我希望获得每周文件下载次数的详细数据(长尾现象是现实吗?)。AWStats 似乎无法满足我的需求。

理想情况下,我会得到一个 Excel 文件,每行一个文件,然后每周(或每天)有一列,下载数字汇总到每个文件/每周的单个单元格中。是否有任何解决方案(基于 PHP 或我加载日志的 Windows 应用程序)可以生成这种格式的报告?

答案1

您可以使用 apache 日志查看文件何时被访问,然后处理日志文件。我知道有很多工具可以自动解析日志,但我从未使用过。

谷歌搜索返回刺痒的,带有示例日志这里

另一个想法是将请求传递到一个页面,该页面会将请求注册到 mysql 数据库中,然后您就可以生成所需的日志

答案2

@phsr 的建议是通过页面提供服务,这是最好的。但是如果你不想这样做,一个简单的 bash 脚本应该能够从日志文件中获取你想要的内容。

我不太擅长 bash 等,但是如果文件位于同一个目录中,那么类似这样的代码(伪代码)应该可以起作用:

for each $file in $mp3dir
   echo $file + ',' + `cat apache.log | grep $file | wc -l` >>myreport.csv

当然,grep 过滤器可能包含更具体的内容,以隔离日志中可能存在的不相关的行。

此外,apache.log 实际上是累积的在一段指定时间内的指定日志文件(假设您有适当的logrotate来每天轮换日志)。

另一种方法是使用grep从日志中获取所有“.mp3”行,并使用sed将每个条目组成一个 csv 行,这样文件名和日期就在同一行。然后将其输入数据库,并从那里进行查询。

如果有人能把它放到“真正的” bash 中,请这样做:)

答案3

您将需要解析 Web 服务器日志文件。日志格式取决于 Web 服务器以及日志配置方式。大多数语言都有模块,使解析日志变得相对简单。没有必要在 bash 或 awk 中从头编写内容。

如果您不想编写任何代码,我建议您查看 splunk。有一个免费版本,允许您每天解析最多 500MB 的日志数据,这是大量的日志数据,因此您应该对免费/社区版本感到满意。

Splunk 还可以为您导出结果。

相关内容