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-fpmASTPHP
- 什麼是CGI、FastCGI、PHP-CGI、PHP-FPMASTPHP
- 區分wsgi、uWSGI、uwsgi、php-fpm、CGI、FastCGIPHPAST
- CGI,FastCGI,PHP-FPM,PHP-CLI,modPHPASTPHP
- cgi和fast-cgi以及php-fpm的聯絡和區別ASTPHP
- 離開 CGI,FastCGI,PHP-FPM 談高可用挺空中樓閣的!ASTPHP
- 淺談PHP fastcgi和php-fpmPHPAST
- fast-CGI 和 PHP-fpmASTPHP
- CGI與FastCGIAST
- CGI和FastCGIAST
- Nginx、fastCGI、php-fpm關係梳理NginxASTPHP
- php-cli和php-fpm FastCgi與PHP-fpm之間的關係PHPAST
- iis + php 遇到問題:php-cgi.exe - FastCGI 程式意外退出PHPAST
- [BUG反饋]php-cgi.exe - FastCGI 程式意外退出PHPAST
- PHP-CGI遠端程式碼執行漏洞(CVE-2012-1823)PHP
- PHP-CGI遠端1程式碼執行漏洞(CVE-2012-1823)PHP
- CGI / FASTCGI已停止工作 彩蛋?AST
- php物件導向知識 this,self,parent的區別PHP物件
- 筆記:MAC使用brew配置nginx、php、mysql、php-fpm、redis筆記MacNginxPHPMySqlRedis
- XAMPP Windows PHP-CGI 程式碼執行漏洞(CVE-2024-4577) | Goby漏洞預警WindowsPHPGo
- 一文搞懂 CGI, FastCGI, WSGI, uWSGI, uwsgiAST
- 使用 PHP-CGI 實現了一個舒爾特列表,鍛鍊自己的注意力~PHP
- iis8 php-cgi.exe - FastCGI 程式意外退出 500錯誤解決辦法PHPAST
- 生物知識點筆記筆記
- 知識盲點 隨筆筆記筆記
- PHP 知識PHP
- vueX基礎知識點筆記Vue筆記
- 基礎知識學習筆記筆記
- Redis知識點筆記總結Redis筆記
- sql基礎知識(筆記)(一)SQL筆記
- 【知識分享】伺服器記憶體和普通記憶體的區別伺服器記憶體
- 自學PHP筆記(二)PHP資料型別PHP筆記資料型別
- Mac PHP-fpmMacPHP
- day5 hadoop hdfs知識筆記Hadoop筆記
- React學習筆記知識點整理React筆記
- RxJava 學習筆記 -- 基礎知識RxJava筆記
- FE.BASE-HTTP3知識筆記HTTP筆記