【问题标题】: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 编写的网络服务器,因此它可以将所有内容保存在内存中。为您提供真正的速度,但是您的应用程序代码必须正确处理更改的请求逻辑。