1、CGI和FastCGI是apache處理php腳本的其中兩種工作模式,還有ISAPI,SAPI等
2、而php-fpm並不是一種工作模式,而是一個PHP在FastCGI模式運行下的進程管理器,全稱為 PHP: FastCGI Process Manager
3、怎么工作的是看你搭建環境的時候使用哪一種工作模式來處理php腳本,當然,少不了的還有你的apache配置(連接數,進程數,線程數等),還有就是所使用的操作系統(不同操作系統對於進程和線程的支持不同,處理能力也不同)。
首先說系統層面吧,不同系統默認會使用不同的多處理模塊(MPM),如下:
BeOS | beos |
Netware | mpm_netware |
OS/2 | mpmt_os2 |
Unix | prefork |
Windows | mpm_winnt |
可以使用apachectl -l 命令來查看當前系統使用哪一種MPM配置。
主要的區別是不同系統使用不同的配置,對於配置項的支持程度也不同。
一般包含以下這些配置項:
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
等等。。。。。。
然后就是apache層面的東西了,
看上面的說明,什么最大連接數啊,每個進程有多少個線程啊,每個進程處理多少個請求什么的,都是可以配置的。怎么處理其中一部分取決於你的配置的值。
然后就是php運行模式的層面了,
現在主流的運行模式是FastCGI,當然有很多以前的配置好的服務器會使用其他模式,具體用命令看一下或者看apache的配置文件就知道了。下面直接貼一段我以前mark下來的內容吧: