php大多数内存有效的方式返回文件

bum*_*box 2 php apache

所以我有一堆文件,一些可以高达30-40mb,我想使用PHP来处理文件的安全性,所以我可以控制谁有权访问它们

这意味着我有一个像这个粗略的例子的脚本

$has_permission = check_database_for_permission($user, filename);

if ($has_permission) {
   header('Content-Type: image/jpeg'); 
   readfile ($filename);    
   exit; 
} else {
  // return 401 error
}
Run Code Online (Sandbox Code Playgroud)

我讨厌每个请求将整个文件加载到内存中,因为它会很快咀嚼我的服务器上的所有内存并同时提出几个请求

所以有几个问题

  1. readfile是最有效的内存方式吗?
  2. 是否有一些更好的方法来实现相同的结果,我忽略了?

服务器:apache/php5

谢谢

JSB*_*ոգչ 6

readfile是这样做的正确方法.无论如何不要尝试自己读取文件并将其打印到输出 - 这消耗过多的内存.使用该readfile功能,文件的内容直接缓冲到输出,占用了大量的暂时性内存.