使用Apache运行PHP时,我知道为每个请求加载了php核心和所有库。但是,使用PHP CGI,FastCGI或使用PHP-FPM,php进程在重新启动之前通常会持续500-1000个请求。
在此期间,它如何处理加载的PHP类或库?
假设我有一个加载大量库的文件,它会在每次请求时加载(然后转储)大型库,还是为我传递的每个新请求加载它?
“加载”是指包含(并解析)类,但不创建任何对象。
APC如何发挥作用?
答案 0 :(得分:2)
对于FCGI(PHP-FPM也是FCGI),只有php二进制文件及其二进制库保留在内存中。 PHP用户代码没有。
在此期间,它如何处理加载的PHP类或库?
将它们踢掉,在新的请求中获得新功能。您可以通过设置全局变量轻松测试它们,它们在新请求的开头就消失了。
所以你的(大胆)问题的答案是让我们直截了当地回答:是的,它会根据每个请求加载和转储,不是或者!:)
APC做同样的事情。我需要研究一个链接,有一个用PHP编写的网络服务器,因此它可以将所有内容保存在内存中。给你真正的速度,然而你的应用程序代码必须正确处理更改的请求逻辑。