最近在使用vagrant搭建php的开发环境。 其中在搭建调试过程中,发现了很多问题(毕竟之前一直在用集成开发环境,一键安装搞定。。)。 进而调查了下CGI FastCGI 与 PHP-FPM 现总结如下:
當你使用瀏覽器造訪了index.php,到底經歷了什麼?
看完這張圖是不是有點清晰了?下面具體講解下。
當你輸入url位址存取index.php時,你的瀏覽器(客戶端)會發送請求到你的伺服器(nginx,apache等),但是伺服器只能處理html等靜態資源,像php,jsp這些動態資源伺服器是無法處理的,所以需要特定的解析器去處理,那麼伺服器與解析器是怎麼通訊(聯繫)的呢?就用到了CGI,它們透過CGI去通信,通信之後就需要使用PHP-FPM去解析php檔案了,解析完成之後,傳回給伺服器,伺服器再傳回給瀏覽器(客戶端),這樣一次請求流程就結束了。
所以:
CGI 是 Web Server 與 Web Application 之間資料交換的一種協定。
FastCGI:同 CGI,是一種通訊協議,但比 CGI 在效率上做了一些最佳化。
PHP-CGI:是 PHP (Web Application)對 Web Server 提供的 CGI 協定的介面程式。
PHP-FPM:是 PHP(Web Application)對 Web Server 提供的 FastCGI 協定的介面程序,額外也提供了相對智慧一些任務管理。
參考資料
CGI、FastCGI和PHP-FPM關係圖解
相關推薦:
php-fpm - 如何查看運行中的php_fpm的設定檔路徑?
以上是CGI、FastCGI 和 PHP_FPM到底有什麼關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!