Apache 日志 - 它们可以用来查看文件是否被调用/使用过

Apache 日志 - 它们可以用来查看文件是否被调用/使用过

这是一个奇怪的问题,但我的直觉告诉我有一个简单的方法可以做到这一点:

我有一个一直在开发的项目,它使用 PHP 编写,已有 14 年历史。尽管我尽一切努力保持开发速度,但其中仍包含大量文件。PHP 部分还不错,我可以通过每个标题中的数据库日志完成我需要的操作。

我讨论的是 apache 的东西 - css、gif、png、旧的 jquery 引用、旧的 js 文件,我可能永远不会使用它们。这些文件大约有 3,000 多个。

许多是对不再使用的旧图像的图像引用。有些是我很久以前停止使用的 jQuery 库。问题是它们看起来都像我记得以前做过的东西,而且有很多遗留的衰减例程有时需要这些旧图像/css/js/{insert here} 才能运行。

基本上,这不是一个网站,而是一个 PHP 引擎,它可以抛出很多东西并且很难追踪,所以我只是保留这些旧的参考资料。

我想要的是一种方法来遍历已经运行一年多的安装的 Apache 日志,并确定自服务器创建以来,每个图像或 CSS 或任何内容是否从未被引用或提取过。

有没有办法逐项验证 Apache 是否曾经使用过它?我有很多运行此代码的服务器,最好对每台服务器都运行此代码,这样(理想情况下)就可以从 Apache 日志中获取不同的文件调用(和计数?)。网址或 unc 路径都可以。

答案1

如果你的文件系统没有设置为丢弃 atimes (例如 ext3/4 noatime),你可以使用一个简单的方法find来定位一段时间内没有被访问过的文件。

例如,查找一年或一年以上未访问的文件:

find /srv/www/ancientproject -atime +365 -print

但这可能无法解决您的问题,原因与 voretaq7 指出的相同。例如,在您删除文件 15 分钟后,可能会有人请求该文件。

答案2

我想要的是一种方法来遍历已经运行一年多的安装的 Apache 日志,并确定自服务器创建以来,每个图像或 CSS 或任何内容是否从未被引用或提取过。

我想要的是无限量的金钱——你不能总是得到你想要的东西

最接近的方法是扫描 Apache 访问日志以查看客户端正在访问哪些文件,但这并不能保证该文件永远不会被使用。

  • 可以使用 PHP 包含它require
  • 它可能会被你服务器上从未做过的事情(管理页面)所使用
  • 可能是因为它不经常使用,而且您的日志不会回溯那么远
    (我的日志每天都会滚动,而且我只在服务器上保留一周的时间 - 如果您不需要它们用于审计目的,这并不罕见)。

如果你想正确地做到这一点,你必须让你的开发人员进行适当的代码审核。这是唯一能确定什么是需要/不需要的方法。

或者,您可以扫描可用日志,删除任何未引用的内容,然后在发现内容损坏时添加回项目。如果您有良好的版本控制,这可能是一个可接受的解决方案。

相关内容