apache php_mod 和 php-fpm fast-cgi 的处理php请求时初始化执行环境的区别

假设当前负载较小,prefork 模式下的 apache 维持的最小空闲进程数的处理能力完全能满足请求量,也就是说这些进程在没有达到 MaxRequestsPerChild 时不会被回收销毁。那么这些常住内存的 php_mod 进程是否等同于 php-fpm 里的常住内存的 fast-cgi 进程呢?他们持有资源是否相同?

我自己理解的 php 的 fast-cgi 进程创建时载入 php解释器,php.ini 和 各项依赖 创建好 php的执行环境并持有,处理请求时只需重复的载入需要处理的 php 脚本即可。

那 apache 的 php_mod 都载入了什么?是同 php 的 fast-cgi 所持有的相同,还是说只是个引导模块,请求到达时才会去载入 php解释器,php.ini 和 各项依赖,即使 apache 没有回收此进程,它在处理完请求后也会释放所持有的 php 的所有资源,下个请求到来时重新载入 php解释器,php ini 和 各项依赖,只不过 apache 节省了创建进程的开支,和 php 相关的东西都会被一次次的重新载入?

说了这么多,其实就一句话:php_mod 进程有没有预加载并持有 php执行的环境,请求到达时只需要载入相应的 php 脚本即可,还是说 php_mod 进程每次都要重复的初始化 php 的执行环境?

阿晨1998
浏览 341回答 3
3回答

慕斯王

根据实际测试,发现还是event的性能要比prefork来得好,相同请求下event的资源消耗比prefork少%20以上。
打开App,查看更多内容
随时随地看视频慕课网APP