1. 程式人生 > >cgi、fastcgi及php-fpm分別是什麼

cgi、fastcgi及php-fpm分別是什麼

cgi

cgi是通用閘道器介面定義。當web server收到/index.php這個請求後,會啟動對應的CGI程式,這裡就是PHP的解析器。接下來PHP解析器會解析php.ini檔案,初始化執行環境,然後處理請求,再以規定CGI規定的格式返回處理後的結果,退出程序。web server再把結果返回給瀏覽器。

fastcgi

fastcgi是一個協議。實現管理程序,提高cgi效能,標準cgi對每個請求都會解析php.ini,初始化環境,浪費時間;fastcgi啟動master程序,解析配置檔案,初始化環境,然後啟動多個worker程序;請求過來時,master傳遞給worker進行處理;worker不夠用會預先多起幾個,worker空閒較多會停掉幾個。

php-fpm

是一個實現了fastcgi協議的程式。修改php.ini之後,php-cgi程序無法平滑重啟。php-fpm對此的處理機制是新的worker用新的配置,已經存在的worker處理完手上的活就可以歇著了,通過這種機制來平滑過度。