一,cgi和fastcgi
創(chuàng)新互聯(lián)是一家集網站建設,順義企業(yè)網站建設,順義品牌網站建設,網站定制,順義網站建設報價,網絡營銷,網絡優(yōu)化,順義網站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網站。在將php-fpm工作原理時,需要先明白cgi是什么?
cgi是使web server和后臺語言進行交互的協(xié)議,有了這個協(xié)議,開發(fā)者可以使用任何語言處理Web server發(fā)來的請求,動態(tài)生成內容。單CGI有一個致命的缺點,那就是每處理一個請求都需要fork一個全新的進程,隨著Web的興起,高并發(fā)越來越成為常態(tài),這樣的低效方式明顯不能滿足需求。這樣,fastcgi就誕生了,cgi很快的退出了歷史舞臺,Fastcgi,顧名思義為更快的CGI,它允許在一個進程內處理多個請求,而不是一個請求處理完畢就直接結束進程,性能上有了很大的提高。
至于 FPM (FastCGI Process Manager),它是 FastCGI 的實現,任何實現了 FastCGI 協(xié)議的 Web Server 都能夠與之通信。FPM 之于標準的 FastCGI,也提供了一些增強功能。
FPM 是一個 PHP 進程管理器,包含 master 進程和 worker 進程兩種進程:master 進程只有一個,負責監(jiān)聽端口,接收來自 Web Server 的請求,而 worker 進程則一般有多個 (具體數量根據實際需要配置),每個進程內部都嵌入了一個 PHP 解釋器,是 PHP 代碼真正執(zhí)行的地方,下圖是我本機上 fpm 的進程情況,1一個 master 進程,3個 worker 進程:
從 FPM 接收到請求,到處理完畢,其具體的流程如下:
FPM 的 master 進程接收到請求
master 進程根據配置指派特定的 worker 進程進行請求處理,如果沒有可用進程,返回錯誤,這也是我們配合 Nginx 遇到502錯誤比較多的原因。
worker 進程處理請求,如果超時,返回504錯誤
請求處理結束,返回結果
FPM 從接收到處理請求的流程就是這樣了,那么 Nginx 又是如何發(fā)送請求給 fpm 的呢?這就需要從 Nginx 層面來說明了。
我們知道,Nginx 不僅僅是一個 Web 服務器,也是一個功能強大的 Proxy 服務器,除了進行 http 請求的代理,也可以進行許多其他協(xié)議請求的代理,包括本文與 fpm 相關的 fastcgi 協(xié)議。為了能夠使 Nginx 理解 fastcgi 協(xié)議,Nginx 提供了 fastcgi 模塊來將 http 請求映射為對應的 fastcgi 請求。
Nginx 的 fastcgi 模塊提供了 fastcgi_param 指令來主要處理這些映射關系,下面 Ubuntu 下 Nginx 的一個配置文件,其主要完成的工作是將 Nginx 中的變量翻譯成 PHP 中能夠理解的變量。
除此之外,非常重要的就是 fastcgi_pass 指令了,這個指令用于指定 fpm 進程監(jiān)聽的地址,Nginx 會把所有的 php 請求翻譯成 fastcgi 請求之后再發(fā)送到這個地址。下面一個簡單的可以工作的 Nginx 配置文件:
在這個配置文件中,我們新建了一個虛擬主機,監(jiān)聽在 80 端口,Web 根目錄為 /home/rf/projects/wordpress。然后我們通過 location 指令,將所有的以 .php 結尾的請求都交給 fastcgi 模塊處理,從而把所有的 php 請求都交給了 fpm 處理,從而完成 Nginx 到 fpm 的閉環(huán)。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章題目:php-fpm工作原理-創(chuàng)新互聯(lián)
本文網址:http://www.rwnh.cn/article14/cegdge.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗、云服務器、靜態(tài)網站、標簽優(yōu)化、微信小程序、微信公眾號
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)