PHP作为CGI如何处理内存?

时间:2011-08-29 18:25:12

标签: php memory-management cgi fastcgi

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

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

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

“加载”是指包含(并解析)类,但不创建任何对象。

APC如何发挥作用?

1 个答案:

答案 0 :(得分:2)

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

  

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

将它们踢掉,在新的请求中获得新功能。您可以通过设置全局变量轻松测试它们,它们在新请求的开头就消失了。

所以你的(大胆)问题的答案是让我们直截了当地回答:是的,它会根据每个请求加载和转储,不是或者!:)

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