PHP的virtual()函数是否可以节省服务器内存?

时间:2011-07-12 14:55:02

标签: php download

我们在服务器上有敏感文件。我们希望这些只能由登录用户访问,因此我们通过PHP脚本为它们提供服务,该脚本检查用户是否有权查看这些文件。然后我们使用readfile()

提供文件

这很好用,但我的理解是readfile()会将整个文件加载到内存中,然后提供它,而virtual()将直接从PHP提供它,从而减轻了对它的压力。服务器的内存。 readfile()目前工作正常,但是新客户希望使用更大的文件获得相同的功能,我想知道转移到virtual()是否会更好。

  1. 我对readfile()virtual()的理解是否正确?
  2. 是否有任何问题,例如缓存?还是我还没有想到的任何其他事情?

1 个答案:

答案 0 :(得分:3)

是的,你是对的。 virtual()将使PHP使用更少的内存,但Apache将发出一个额外的请求。

更好的方法是Apache X-Sendfile模块。你需要从PHP做的所有事情是额外的header()调用,Apache将为你提供文件,而不是PHP。这使用的资源更少。

Here's a tutorial