本篇文章主要講述的是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處理完手上的活就可以歇著了,通過這種機制來平滑過度。
新聞熱點
疑難解答