FastCgi是通訊協(xié)議,可以通過Unix套接字或者Tcp進(jìn)行通訊.Nginx內(nèi)置基本模塊FastCgi模塊(控制緩存區(qū)大小等功能)
Nginx通過FastCgi技術(shù)和外部的服務(wù)或者工具一起工作.php自己能夠運行一個Fastcgi應(yīng)用程序(php-fcgi)..
Nginx通過FastCgi協(xié)議將請求發(fā)送給Php Fastcgi應(yīng)用程序執(zhí)行
編譯Php的時候配置--enable-fastcgi.可以通過二種方法運行FastCgi Server
第一種就是將php編譯進(jìn)FastCgi Server.另外就是借助第三方的wrApper(比如Lighttpd的spawn-fcgi),穩(wěn)定性更好.
最后需要配置Nginx將請求發(fā)送之Php的本地端口中.Nginx通過Upstream異步的處理后端的請求.總體來說對比Apache+Php的方式更能節(jié)省內(nèi)存.
而目前PHP-FPM是目前最好的管理PHP的FastCGI處理器.在高版本的Php中已經(jīng)編譯進(jìn)內(nèi)核了.
主要特點就是能動態(tài)負(fù)載均衡php-fcgi,更好的切換php-fcgi進(jìn)程.更好的啟動和重啟php worker(不丟失請求).能夠以不同的用戶,權(quán)限啟動.
而未來支持的特性包括
1:編譯進(jìn)PHP內(nèi)核(已完成)
2:處理模型:自適應(yīng)的進(jìn)程swawning.更好的利用多核Cpu
3:配置文件的定制化
4:內(nèi)部處理基于libevent(有必要嗎?)
5:per-pool :定制不通的pool基于不同的PHP.in
6:更多的工具:比如通過syslog記錄日志,動態(tài)顯示Php處理的狀態(tài)(MySQL的show proceslist)