1、CGI
公共網(wǎng)關(guān)接口(Common Gateway Interface)是一個(gè)Web服務(wù)器主機(jī)提供信息服務(wù)的標(biāo)準(zhǔn)接口坊谁。通過CGI接口费彼,Web服務(wù)器就能夠獲取客戶端提交的信息,轉(zhuǎn)交給服務(wù)器端的CGI程序進(jìn)行處理口芍,最后返回結(jié)果給客戶端箍铲。不規(guī)范說來就是CGI是個(gè)協(xié)議是個(gè)處理器,規(guī)定了傳遞給后方的數(shù)據(jù)內(nèi)容以及數(shù)據(jù)格式鬓椭。
CGI的不足之處在于CGI的一個(gè)進(jìn)程只能處理一個(gè)請(qǐng)求颠猴」鼗基本流程就是
請(qǐng)求過來 -> CGI創(chuàng)建一個(gè)進(jìn)程 -> 處理請(qǐng)求 -> 銷毀進(jìn)程
linux下創(chuàng)建進(jìn)程開銷較小,但是初始化的開銷較大翘瓮,CGI每次創(chuàng)建后的初始化都會(huì)消耗性能贮折。在此基礎(chǔ)上,F(xiàn)astCGI更能有效利用資源资盅。
2调榄、FastCGI
FastCGI的工作原理和CGI一致,都是利用標(biāo)準(zhǔn)輸入輸出流來處理HTTP等的文本協(xié)議呵扛。
FastCGI和CGI的不同之處振峻,或者說FastCGI是用來彌補(bǔ)CGI的不足之處,便是在初始化后择份,啟動(dòng)多個(gè)CGI進(jìn)程來等到請(qǐng)求,到接到請(qǐng)求則發(fā)送給其中一個(gè)烫堤,當(dāng)空閑時(shí)則掛起荣赶。當(dāng)空閑的CGI太多時(shí),也會(huì)適當(dāng)關(guān)閉一些鸽斟。這樣就有效提高了效率拔创。
FastCGI的缺點(diǎn)是占用的服務(wù)器內(nèi)存稍大。
3富蓄、PHPCGI
PHPCGI是PHP自帶的CGI解釋器剩燥,只能解析不能管理進(jìn)程。
還有個(gè)不足之處是立倍,當(dāng)更改php.ini配置后灭红,需要重啟php-cgi才能生效。
4口注、PHPFPM
PHP-FPM用來調(diào)度PHP-CGI進(jìn)程的程序变擒,是將FastCGI進(jìn)程管理整合到PHP包中,也是為了修改php.ini配置文件后可以平滑重啟寝志。原理和FastCGI一樣娇斑,不同之處是PHP-fpm只是針對(duì)PHP的Fastcgi進(jìn)程管理器。