PHP知識筆記:CGI,FastCGI,PHP-CGI,PHP-FPM,Spawn-FCGI區別
原作者連結:https://www.aicyun.com/article/34
原理
nginx只是 web 中的內容分發者,比如,如果請求/index.html,那麼web server會去檔案系統中找到這個檔案,傳送給瀏覽器,這裡分發的是靜態資料。好了,如果現在請求的是/index.php,根據配置檔案,nginx知道這個不是靜態檔案,需要去找PHP解析器來處理,那麼他會把這個請求簡單處理後交給PHP解析器。即啟動對應的CGI程式,PHP解析器會解析php.ini檔案,初始化一個環境程式,然後處理請求,在以規定CGI規定的格式返回處理後的結果,退出程式,nginx 在把結果返回給瀏覽器.
CGI
CGI是公共閘道器介面(common gateway interface);http 伺服器與你的或者其他機器上的程式進行交談的一種工具,程式需執行在網路伺服器上
CGI可以用於任何語言,只有這種語言具有標準的輸入,輸出和環境變數.
CGI是個協議.
FastCGI
Fastcgi是用來提高CGI程式效能的,CGI程式的效能出在CGI對每個請求都會執行解析php.ini初始化執行環境
這些步驟,每次請求都啟動一個程式,假如有幾千萬請求那就完了.
Fastcgi會先啟動一個master,專門解析配置,初始化環境,在啟動多個worker程式,請求來了,master會傳遞給一個worker,然後繼續等待下一個請求,這就避免了重複的解析和初始化,效率提升不少.假如worker程式不夠,master主程式會多啟動幾個 worker,如果空閒了,master 會主動停止一些 worker.這節省了大量的資源
PHP-CGI
PHP-CGI是PHP自帶的FastCGI管理器
弊端:
- php-cgi假如改了配置檔案需要重啟php-cgi,不能做到平滑重啟
- 直接殺死php-cgi程式,php 就不能執行了
PHP-FPM
PHP-FPM是一個PHP FastCGI管理器,準確的說是管理的 php-cgi,fastcgi是一種協議,和程式無關.php-fpm在修改php.ini後不像php-cgi不能平滑重啟.php-fpm會讓新的worker用新的配置,已經存在的 worker 處理完了就停止了.
php-cgi只是解釋PHP指令碼的程式而已
Spawn-FCGI
通用的FastCGI管理伺服器,lighttpd的一部分.最新的lighttpd也沒有包含這一塊,不建議使用.
相關文章
- CGI,FastCGI,PHP-CGI與PHP-FPM的區別ASTPHP
- CGI,FastCGI,PHP-CGI與PHP-FPM區別詳解ASTPHP
- CGI、FastCGI、PHP-CGI和PHP-FPM 概念區分ASTPHP
- 白話 CGI,FastCGI,PHP-CGI,PHP-fpmASTPHP
- 什麼是CGI、FastCGI、PHP-CGI、PHP-FPMASTPHP
- CGI FastCGI PHP-CGI與PHP-FPM概念介紹ASTPHP
- cgi,fastcgi,php-fpmASTPHP
- 區分wsgi、uWSGI、uwsgi、php-fpm、CGI、FastCGIPHPAST
- CGI,FastCGI,PHP-FPM,PHP-CLI,modPHPASTPHP
- 簡單瞭解下CGI、FastCGI和php-fpm的概念和區別和執行原理ASTPHP
- cgi和fast-cgi以及php-fpm的聯絡和區別ASTPHP
- 離開 CGI,FastCGI,PHP-FPM 談高可用挺空中樓閣的!ASTPHP
- 淺談PHP fastcgi和php-fpmPHPAST
- fast-CGI 和 PHP-fpmASTPHP
- Nginx、fastCGI、php-fpm關係梳理NginxASTPHP
- CGI與FastCGIAST
- CGI和FastCGIAST
- window + nginx-rtmp + php-cgi 伺服器搭建NginxPHP伺服器
- php-cli和php-fpm FastCgi與PHP-fpm之間的關係PHPAST
- PHP-FPM,Nginx,FastCGI 之間的關係PHPNginxAST
- iis + php 遇到問題:php-cgi.exe - FastCGI 程式意外退出PHPAST
- [BUG反饋]php-cgi.exe - FastCGI 程式意外退出PHPAST
- HTTP協議(包含與HTTPS的區別) 知識筆記HTTP協議筆記
- php物件導向知識 this,self,parent的區別PHP物件
- CGI / FASTCGI已停止工作 彩蛋?AST
- 筆記:MAC使用brew配置nginx、php、mysql、php-fpm、redis筆記MacNginxPHPMySqlRedis
- PHP學習筆記(1)–基礎知識篇PHP筆記
- Servlet和CGI的區別Servlet
- CGI的一些知識點
- 一文搞懂 CGI, FastCGI, WSGI, uWSGI, uwsgiAST
- PHP-CGI程式CPU100%與file_get_contents函式的關係PHP函式
- PHP-CGI遠端程式碼執行漏洞(CVE-2012-1823)PHP
- numpy知識點筆記筆記
- SQL SERVER 知識筆記SQLServer筆記
- 生物知識點筆記筆記
- 知識盲點 隨筆筆記筆記
- 使用 PHP-CGI 實現了一個舒爾特列表,鍛鍊自己的注意力~PHP
- PHP-CGI遠端1程式碼執行漏洞(CVE-2012-1823)PHP