CGI是一種協議,經過這種協議(或約定的規則),WEB服務器能夠和應用程序進行數據交互處理。php
CGI包含三個方面:前端
簡而言之,CGI在環境變量中,描述了請求的基本信息;在標準輸入中,描述了請求主體是如何傳入的;在標準輸出中,描述了請求響應是如何輸出的。segmentfault
FASTCGI 是 CGI 的改進方案,主要優勢是把動態語言和 HTTP Server 分離開來。服務器
所以 Nginx 與 PHP/PHP-FPM 常常被部署在不一樣的服務器上,以分擔前端 Nginx 服務器的壓力。數據結構
使 Nginx 專注處理靜態請求和轉發動態請求,而 PHP/PHP-FPM 服務器專注解析 PHP 動態請求。併發
CGI:app
FASTCGI:高併發
FastCGI原理圖spa
Nginx 將 CGI 請求發送給 Socket:pwa
PHP-FPM 是 FASTCGI 協議的一種實現,在 PHP5.3.× 版本中就開始內置該進程管理器。
Spawn-fcgi是 HTTP 服務器 lighttpd 的一部分,目前已經獨立成爲一個項目,通常與 lighttpd 配合使用來支持PHP。
可是 ligttpd 的spwan-fcgi 在高併發訪問的時候,會出現內存泄漏甚至自動重啓 FastCGI 的問題。