所以我有一堆文件,有些可能有 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
}
我讨厌每次请求都将整个文件加载到内存中,因为它会很快用几个同时请求耗尽我服务器上的所有内存
有几个问题
- readfile 是内存效率最高的方法吗?
- 有没有更好的方法可以达到我忽略的相同结果?
服务器:apache/php5
谢谢
最佳答案
readfile
是执行此操作的正确方法。无论如何不要尝试自己读取文件并将其打印到输出——那样会消耗过多的内存。使用 readfile
函数,文件的内容直接缓冲到输出,占用少量的临时内存。
关于php 返回文件的内存效率最高的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3010231/