PHP作为CGI如何处理内存?

Xeo*_*oss 7 php cgi memory-management fastcgi

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

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

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

"加载"我的意思是包含(并解析)类,但不创建任何对象.

APC如何发挥作用?

hak*_*kre 2

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

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

把他们踢开,让他们根据新的要求接受新的。您可以通过设置全局变量轻松测试它们是否在新请求开始时消失。

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

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