PHP's virtual()函数节省服务器内存吗?


Does PHP's virtual() function save server memory?

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

这工作得很好,但这是我的理解,readfile()将加载整个文件到内存中,然后服务它,而virtual()将直接从PHP服务它,从而减少对服务器内存的压力。readfile()现在工作得很好,但是一个新的客户端想要相同的功能,更大的文件,我想知道是否移动到virtual()会更好。

  1. 我对readfile()virtual()的理解是否正确?
  2. 是否有任何陷阱,例如,缓存?或者还有什么我没想到的?

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

一个更好的方法是Apache X-Sendfile模块。您需要从PHP中做的只是一个额外的header()调用,Apache将为您提供文件,而不是PHP。

这是一个教程