apache是經過mod_php來解析php nginx是經過php-fpm(fast-cgi)來解析php1. PHP 解釋器是否嵌入 Web 服務器進程內部執行mod_php 經過嵌入 PHP 解釋器到 Apache 進程中,只能與 Apache 配合使用,而 cgi 和 fast-cgi 以獨立的進程的形式出現,只要對應的Web服務器實現 cgi 或者 fast-cgi 協議,就可以處理 PHP 請求。mod_php 這種嵌入的方式最大的弊端就是內存佔用大,不管是否用到 PHP 解釋器都會將其加載到內存中,典型的就是處理CSS、JS之類的靜態文件是徹底沒有必要加載解釋器。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 協議的一個實現。