1. PHP 阐明器是否嵌入 Web 做事器进程内部实行

mod_php 通过嵌入 PHP 阐明器到 Apache 进程中,只能与 Apache 合营利用,而 cgi 和 fast-cgi 以独立的进程的形式涌现,只要对应的Web做事器实现 cgi 或者 fast-cgi 协议,就能够处理 PHP 要求。

mod_php 这种嵌入的办法最大的弊端便是内存占用大,不论是否用到 PHP 阐明器都会将其加载到内存中,范例的便是处理CSS、JS之类的静态文件是完备没有必要加载阐明器。

apachephpnginxphpapache 和 phpnginx的差别 JavaScript

2. 单个进程处理的要求数量

mod_php 和 fast-cgi 的模式在每个进程的生命周期内能够处理多个要求(fast-cgi可以根据须要来调度进程的多少),而 cgi 的模式处理一个要求就立时销毁进程,在高并发的场景下 cgi 的性能非常糟糕。

每一个Web要求PHP都必须重新解析php.ini、重新载入全部dll扩展并重初始化全部数据构造。
利用FastCGI,所有这些都只在进程启动时发生一次

综上,如果对性能有极高的哀求,可以将静态要乞降动态要求分开,这时 Nginx + php-fpm 是比较好的选择。

PS: cgi、fastcgi 常日指 Web 做事器与阐明器通信的协议规范,而 php-fpm 是 fastcgi 协议的一个实现。