php 返回文件的内存效率最高的方法

标签 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
}

我讨厌每次请求都将整个文件加载到内存中,因为它会很快用几个同时请求耗尽我服务器上的所有内存

有几个问题

  1. readfile 是内存效率最高的方法吗?
  2. 有没有更好的方法可以达到我忽略的相同结果?

服务器:apache/php5

谢谢

最佳答案

readfile 是执行此操作的正确方法。无论如何不要尝试自己读取文件并将其打印到输出——那样消耗过多的内存。使用 readfile 函数,文件的内容直接缓冲到输出,占用少量的临时内存。

关于php 返回文件的内存效率最高的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3010231/

相关文章:

php - MySQLi更新和死亡();和退出();不工作

php - 修复损坏的嵌套集

php - 如何在 mysql 中使用带有 OR 子句的 'INSERT INTO IGNORE' 或 'NOT EXISTS'

apache - 自定义 404 页面上的相对链接

php - 我如何在 .htaccess 文件中引用 $_SERVER ['DOCUMENT_ROOT' ]?

php - 增加上传文件大小 cakephp 3

php - 脚本在实时服务器上运行良好但在 wamp 上运行不正常

php - Github 仓库所有者(Yii2 用户)离开了仓库 - 如何进行?

php - 不同的操作系统和服务器路径

apache - 使用 .htaccess 规则递归重定向所有 PDF?