【问题标题】:How does PHP as a CGI handle memory?PHP 作为 CGI 是如何处理内存的?
【发布时间】:2011-11-06 05:54:13
【问题描述】:

当使用 Apache 运行 PHP 时,我知道每个请求都会加载 php 核心和所有库。但是,使用 PHP CGI、FastCGI 或使用 PHP-FPM,php 进程在重新启动之前通常会持续 500-1000 个请求。

在此期间,它如何处理加载的 PHP 类或库?

假设我有一个加载大型库的文件,它会在每个请求中加载(然后转储)大型库还是为我传递的每个新请求保持加载?

“加载”是指包含(和解析)类,但没有创建对象。

APC 如何参与其中?

【问题讨论】:

标签: php memory-management cgi fastcgi


【解决方案1】:

对于 FCGI(PHP-FPM 也是 FCGI),只有 php 二进制文件及其二进制库保留在内存中。 PHP 用户代码没有。

在此期间,它如何处理加载的 PHP 类或库?

让他们开始,在新的请求中让他们成为新的。您可以通过设置全局变量轻松测试,它们在新请求开始时就消失了。

所以你(粗体)问题的答案是让我们直接回答:是的,它会根据每个请求加载和转储,否或! :)

APC 也是如此。我需要研究一个链接,有一个用 PHP 编写的网络服务器,因此它可以将所有内容保存在内存中。为您提供真正的速度,但是您的应用程序代码必须正确处理更改的请求逻辑。

【讨论】:

猜你喜欢
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 2015-04-02
  • 2015-07-07
相关资源
最近更新 更多