CGI為“通用網(wǎng)關(guān)接口”(Common Gateway Interface),而Fastcgi是CGI的升級版戈泼,一種語言無關(guān)的協(xié)議婿禽,用來溝通程序(如PHP, Python, Java)和Web服務(wù)器(Apache2, Nginx)。
程序和web服務(wù)器想要通信大猛,這就需要Fastcgi扭倾,在這里Fastcgi相當(dāng)于是一門語言,就好像中國人和美國人通過英語交流一樣挽绩,F(xiàn)astcgi就是英語膛壹,但除此之外還需要“翻譯官”,對于php來說唉堪,它的翻譯官就是php-fpm模聋,而web服務(wù)器都有自己內(nèi)置的“翻譯官”,這樣唠亚,通過Fastcgi链方,程序和web服務(wù)器得以交流。
PHP的解釋器是php-cgi趾撵。php-cgi只是個CGI程序,它自己本身只能解析請求共啃,返回結(jié)果占调,不會進程管理,所以就出現(xiàn)了一些能夠調(diào)度php-cgi進程的程序php-fpm移剪,同時究珊,修改了php.ini配置文件后,沒辦法平滑重啟纵苛,這也是php-fpm誕生的原因之一剿涮。
php-fpm 有兩個功能:1.實現(xiàn)了一個支持fastcgi協(xié)議的server程序 2. 進程管理器 ? 有了php-fpm,就可以把php腳本變成己內(nèi)置的多進程模式攻人,采用了Fastcgi協(xié)議的程序就可以和web服務(wù)器進行通信取试。