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

发布于 2024-11-19 10:12:17 字数 357 浏览 0 评论 0原文

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

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

  1. 我对 readfile() 和 virtual() 的理解正确吗?
  2. 例如,缓存方面是否存在任何问题?还是还有什么我没想到的?

We have sensitive files on a server. We want these to be accessible only to logged in users, so we serve them through a PHP script which checks whether the user has permission to view these files. Then we serve the file with readfile().

This works fine, but it's my understanding that readfile() will load the entire file into memory, and then serve it, while virtual() will serve it directly from PHP, and thus reduce the stress on the server's memory. readfile() is working fine for now, but a new client wants the same functionality with much larger files, and I was wondering whether moving to virtual() would be better.

  1. Is my understanding of readfile() and virtual() correct?
  2. Are there any gotchas with, for example, caching? Or anything else I haven't thought of?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

帥小哥 2024-11-26 10:12:17

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

更好的方法是 Apache X-Sendfile 模块。您只需从 PHP 执行一次额外的 header() 调用,Apache 就会为您提供该文件,而不是 PHP。这使用的资源甚至更少。

这是一个教程

Yes, you are correct. virtual() will make PHP use less memory, but Apache will issue one extra request.

A better way would be the Apache X-Sendfile module. All you'd need to do from PHP is an extra header() call and Apache will serve the file for you, instead of PHP. That uses even less resources.

Here's a tutorial

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文