fast-cgi/cgi協議與php-fpm/php-cgi程序

一、fast-cgi/cgi

fast-cgicgi都是web服務器程序url處理程序兩者之前的應用層網絡協議,現在都是用fast-cgi協議,那麼現的url處理程序也都是實現了fast-cgi
二、php-fpm/php-cgi

**php-fpm**是實現**fast-cgi協議**的一個**程序****php-cgi**是實現了**cgi協議**的一個**程序**

這是網上很多的理論,這兩個程序就是實現對應協議的兩個程序
php-fpmphp-cgi兩個程序有什麼不同點相同點呢?

一、php-fpmphp-cgi相同點
相同點它們都是php解釋器都是用來解釋php源代碼處理web服務器傳來的對應協議參數,然後根據對應協議輸出處理結果給web服務器

二、php-fpmphp-cgi不同點

不同點就是兩者與web服務器程序通信使用的網絡協議不同,php-fpm程序web服務器程序通信用的是fast-cgi協議php-cgi程序web服務器程序通信用的是cgi協議

當然不可能平白無故的使用兩個協議,php-cgi程序php-fpm程序的對web服務器程序的請求處理機制是不同的

php-cgi程序是每次都重新加載新的程序來處理web服務器程序的請求,所以每次處理都有相同的操作,如解析php.ini文件,初始化執行環境,然後開始編譯處理php源代碼,再以cgi協議規定的格式返回處理結果給web服務器程序,然後退出cgi程序進程

php-fpm程序,則不一樣,php-fpm程序會先啓一個master程序,解析配置文件,初始化執行環境,然後再啓動多個worker程序。當web服務器程序的請求請求過來時,master程序會把請求傳遞給一個worker程序,由worker程序處理請求後,再以fast-cgi協議規定的格式返回處理結果給web服務器程序,返回結果後,worker程序不會被銷燬,而是等下次處理,這樣就避免了重複的勞動,效率自然是高。而且當worker不夠用時,master可以根據配置預先啓動幾個worker等着;當然空閒worker太多時,也會停掉一些,這樣就提高了性能,也節約了資源。

三、phpv7.2.19的php-cgi
phpv7.2.19沒有php-fpm程序了,現在只有php-cgi程序了,直接由php-cgi程序實現了fast-cgi協議,與web服務器程序通迅機制跟之前的php-fpm程序一樣的。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
通過瀏覽器由http協議訪問服務器,由web服務器程序通過fast-cgi協議php-cgi程序訪問,php-cgi程序輸出當前運行模式web服務器程序,最終瀏覽器收到的是fast-cgi運行模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章