文件下载与PHP,跟踪,授权,缓存,哑剧类型

时间:2012-01-31 15:41:53

标签: php apache caching mime-types

我的CMS带有一个脚本,该脚本是为/files文件夹中访问的每个文件执行的。

我在RewriteRule

中使用/files/.htaccess进行了设置

RewriteRule ^(.*) ../file_tracker?path=/$1

file_tracker.php脚本应该做两件事:

  • 跟踪:记录访问文件的次数以及上次访问文件的时间。
  • 授权:例如/files/secure中的文件需要登录会话。

当你有这样的脚本时,你需要做更多的事情,例如:

  • 如果文件不存在,则返回404状态代码 - 需要file_exists检查
  • 输出正确的MIME类型标题 - 如果您允许提供任何文件类型,这在PHP中是一场噩梦
  • 输出合理的缓存标头 - 自定义电子标签?

我希望这个脚本尽可能快,因为有些页面有很多文件,100毫秒的开销已经太多了。现在我正在考虑一个简单的日志来进行跟踪,其中包含一个可以进行批量更新的计划任务。授权将更加资源密集,但我想我无法避免这种情况。我想让Apache做的最后一部分,因为它似乎非常擅长:正确的标题,用于缓存的电子标签,以及所有那些好看。

我很确定我不能成为唯一有这个问题的人。有什么建议吗?


更新:我没有要展示的代码,因为没有相关代码。我可以实现的东西是如此微不足道,甚至不值得张贴。这是一个进步的主题。 “使用header()”不是我正在寻找的那种建议。


X-Sendfile将是完美的解决方案,但默认情况下大多数主机都没有启用,所以我不能依赖它。

1 个答案:

答案 0 :(得分:0)

我想这可以归结为访问PHP中的日志记录。授权是一个不同的问题。我将结束这个问题并制作一个新问题。