CGI、FastCGI、PHPCGI、PHPFPM的區(qū)別

1、CGI

公共網關接口(Common Gateway Interface)是一個Web服務器主機提供信息服務的標準接口。通過CGI接口,Web服務器就能夠獲取客戶端提交的信息,轉交給服務器端的CGI程序進行處理,最后返回結果給客戶端。不規(guī)范說來就是CGI是個協議是個處理器,規(guī)定了傳遞給后方的數據內容以及數據格式。
CGI的不足之處在于CGI的一個進程只能處理一個請求。基本流程就是
請求過來 -> CGI創(chuàng)建一個進程 -> 處理請求 -> 銷毀進程
linux下創(chuàng)建進程開銷較小,但是初始化的開銷較大,CGI每次創(chuàng)建后的初始化都會消耗性能。在此基礎上,FastCGI更能有效利用資源。

2、FastCGI

FastCGI的工作原理和CGI一致,都是利用標準輸入輸出流來處理HTTP等的文本協議。
FastCGI和CGI的不同之處,或者說FastCGI是用來彌補CGI的不足之處,便是在初始化后,啟動多個CGI進程來等到請求,到接到請求則發(fā)送給其中一個,當空閑時則掛起。當空閑的CGI太多時,也會適當關閉一些。這樣就有效提高了效率。
FastCGI的缺點是占用的服務器內存稍大。

3、PHPCGI

PHPCGI是PHP自帶的CGI解釋器,只能解析不能管理進程。
還有個不足之處是,當更改php.ini配置后,需要重啟php-cgi才能生效。

4、PHPFPM

PHP-FPM用來調度PHP-CGI進程的程序,是將FastCGI進程管理整合到PHP包中,也是為了修改php.ini配置文件后可以平滑重啟。原理和FastCGI一樣,不同之處是PHP-fpm只是針對PHP的Fastcgi進程管理器。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容