php 中 FastCGI與cgi的關係,何爲fastcgi

FastCGI是語言無關的、可伸縮架構的CGI開放擴展,其主要行爲是將CGI解釋器進程保持 在內存中並所以得到較高的性能。衆所周知,CGI解釋器的反覆加載是CGI性能低下的主要緣由, 若是CGI解釋器保持在內存中並接受FastCGI進程管理器調度,則能夠提供良好的性能、伸縮性、 Fail-Over 特性等。
FastCGI的工做原理是:
(1) FastCGI進程管理器自身初始化,啓動多個CGI解釋器進程(多個php-cgi進程)並等 待來自Web Server的鏈接。在本文中,採用PHP-FPM進程管理器啓動多個php-cgi FastCGI進 程。啓動php-cgi FastCGI進程時,能夠配置以TCP和UNIX套接字兩種方式啓動。
(2) 當客戶端請求到達Web服務器(Nginx)時,Web服務器將請求採用TCP協議或UNIX 套接字方式轉發到FastCGI主進程,FastCGI主進程選擇並鏈接到一個CGI解釋器(子進程)。 Web服務器將CGI環境變量和標準輸入發送到FastCGI子進程php-cgi。
(3)
FastCGI子進程完成處理後將標準輸出和錯誤信息從同一鏈接返回Web服務器(Nginx).
當FastCGI子進程關閉鏈接時,請求便告知處理完成。FastCGI子進程接着等待並處理來自FastCGI 進程管理器的下一個鏈接。而在通常的普通CGI模式中,php-cgi在此便退出了。
因此,你能夠想象普通的CGI模式有多慢。每個Web請求PHP都必須從新解析php.ini、 從新載入所有擴展並從新初始化所有數據結構。使用FastCGI,全部這些都只在進程啓動時發生 一次。一個額外的好處是,持續數據庫鏈接(Persistent database connection)能夠工做。
PHP FastCGI 的優勢:
(1) PHP腳本運行速度更快。PHP解釋程序被載入內存而不用每次須要時從存儲器讀取, 此舉極大提高了依靠腳本運行站點的性能。
(2) 需要使用的系統資源更少。因爲服務器不用在每次須要時都載入PHP解釋程序,你可 以將站點的傳輸速度提高不少而沒必要增長CPU負擔。
(3) 不須要對現有的代碼做任何改變。運行在Apache+PHP上的程序,無須修改便可適用 於 PHP 的 FastCGI。php

相關文章
相關標籤/搜索