PHP';s virtual()函数是否保存服务器内存?

PHP';s virtual()函数是否保存服务器内存?,php,download,Php,Download,我们在服务器上有敏感文件。我们希望只有登录的用户才能访问这些文件,因此我们通过一个PHP脚本为他们提供服务,该脚本检查用户是否有权查看这些文件。然后我们使用readfile()提供该文件 这很好,但据我所知,readfile()将把整个文件加载到内存中,然后提供给它,而virtual()将直接从PHP提供给它,从而减少服务器内存的压力readfile()目前运行良好,但是一个新的客户端希望在更大的文件中使用相同的功能,我想知道移动到virtual()是否会更好 我对readfile()和virt

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

这很好,但据我所知,
readfile()
将把整个文件加载到内存中,然后提供给它,而
virtual()
将直接从PHP提供给它,从而减少服务器内存的压力
readfile()
目前运行良好,但是一个新的客户端希望在更大的文件中使用相同的功能,我想知道移动到
virtual()
是否会更好

  • 我对
    readfile()
    virtual()
    的理解正确吗
  • 例如,缓存是否存在问题?或者其他我没想到的事

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

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


    是的,请使用Apache X-Sendfile,或者如果您使用的是nginx X-Accel-Redirect,请访问找到的链接。我试图将此内容编辑到您的答案中,但被告知编辑内容必须超过六个字符。lighttpd还支持X-Sendfile