服务器上有敏感文件。我们希望只有登录用户才能访问这些文件,因此我们通过一个PHP脚本提供这些文件,该脚本检查用户是否有权限查看这些文件。然后我们用readfile()
提供文件。
这工作得很好,但这是我的理解,readfile()
将加载整个文件到内存中,然后服务它,而virtual()
将直接从PHP服务它,从而减少对服务器内存的压力。readfile()
现在工作得很好,但是一个新的客户端想要相同的功能,更大的文件,我想知道是否移动到virtual()
会更好。
- 我对
readfile()
和virtual()
的理解是否正确? - 是否有任何陷阱,例如,缓存?或者还有什么我没想到的?
是的,你是正确的。virtual()
将使PHP使用更少的内存,但Apache将发出一个额外的请求。
header()
调用,Apache将为您提供文件,而不是PHP。
这是一个教程