我们在服务器上有敏感文件。我们希望这些只能由登录用户访问,因此我们通过PHP脚本为它们提供服务,该脚本检查用户是否有权查看这些文件。然后我们使用readfile()
。
这很好用,但我的理解是readfile()
会将整个文件加载到内存中,然后提供它,而virtual()
将直接从PHP提供它,从而减轻了对它的压力。服务器的内存。 readfile()
目前工作正常,但是新客户希望使用更大的文件获得相同的功能,我想知道转移到virtual()
是否会更好。
readfile()
和virtual()
的理解是否正确?答案 0 :(得分:3)
是的,你是对的。 virtual()
将使PHP使用更少的内存,但Apache将发出一个额外的请求。
更好的方法是Apache X-Sendfile模块。你需要从PHP做的所有事情是额外的header()
调用,Apache将为你提供文件,而不是PHP。这使用的资源更少。