溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

apache+PHP和ngnix+php的區(qū)別是什么

發(fā)布時(shí)間:2021-08-09 20:24:28 來源:億速云 閱讀:186 作者:chen 欄目:編程語言

這篇文章主要講解了“apache+PHP和ngnix+php的區(qū)別是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“apache+PHP和ngnix+php的區(qū)別是什么”吧!

  apache+PHP和ngnix+php的區(qū)別有哪些

  apache一般是把php當(dāng)做自己的一個(gè)模塊來啟動(dòng);而ngnix則是把http請求變量轉(zhuǎn)發(fā)給php進(jìn)程,即php獨(dú)立進(jìn)程,與ngnix通信,這種方式叫做FastCGI運(yùn)行方式。

  所以,apache所編譯的php不能用于ngnix。

  什么是FastCGI呢

  FastCGI是一個(gè)可伸縮地、高速地在HTTPserver和動(dòng)態(tài)腳本語言間通信的接口。多數(shù)流行的HTTPserver都支持FastCGI,包括Apache、Nginx和lighttpd等。同時(shí),F(xiàn)astCGI也被許多腳本語言支持,其中就有PHP。

  FastCGI是從CGI發(fā)展改進(jìn)而來的。傳統(tǒng)CGI接口方式的主要缺點(diǎn)是性能很差,因?yàn)槊看蜨TTP服務(wù)器遇到動(dòng)態(tài)程序時(shí)都需要重新啟動(dòng)腳本解析器來執(zhí)行解析,然后將結(jié)果返回給HTTP服務(wù)器。這在處理高并發(fā)訪問時(shí)幾乎是不可用的。另外傳統(tǒng)的CGI接口方式安全性也很差,現(xiàn)在已經(jīng)很少使用了。

  FastCGI接口方式采用C/S結(jié)構(gòu),可以將HTTP服務(wù)器和腳本解析服務(wù)器分開,同時(shí)在腳本解析服務(wù)器上啟動(dòng)一個(gè)或者多個(gè)腳本解析守護(hù)進(jìn)程。當(dāng)HTTP服務(wù)器每次遇到動(dòng)態(tài)程序時(shí),可以將其直接交付給FastCGI進(jìn)程來執(zhí)行,然后將得到的結(jié)果返回給瀏覽器。這種方式可以讓HTTP服務(wù)器專一地處理靜態(tài)請求或者將動(dòng)態(tài)腳本服務(wù)器的結(jié)果返回給客戶端,這在很大程度上提高了整個(gè)應(yīng)用系統(tǒng)的性能。

  Nginx+FastCGI運(yùn)行原理有哪些

  Nginx不支持對外部程序的直接調(diào)用或者解析,所有的外部程序(包括PHP)必須通過FastCGI接口來調(diào)用。FastCGI接口在Linux下是socket(這個(gè)socket可以是文件socket,也可以是ipsocket)。

  wrapper:為了調(diào)用CGI程序,還需要一個(gè)FastCGI的wrapper(wrapper可以理解為用于啟動(dòng)另一個(gè)程序的程序),這個(gè)wrapper綁定在某個(gè)固定socket上,如端口或者文件socket。當(dāng)Nginx將CGI請求發(fā)送給這個(gè)socket的時(shí)候,通過FastCGI接口,wrapper接收到請求,然后Fork(派生)出一個(gè)新的線程,這個(gè)線程調(diào)用解釋器或者外部程序處理腳本并讀取返回?cái)?shù)據(jù);接著,wrapper再將返回的數(shù)據(jù)通過FastCGI接口,沿著固定的socket傳遞給Nginx;最后,Nginx將返回的數(shù)據(jù)(html頁面或者圖片)發(fā)送給客戶端。這就是Nginx+FastCGI的整個(gè)運(yùn)作過程。

  所以,我們首先需要一個(gè)wrapper,這個(gè)wrapper需要完成的工作:

  通過調(diào)用fastcgi(庫)的函數(shù)通過socket和ningx通信(讀寫socket是fastcgi內(nèi)部實(shí)現(xiàn)的功能,對wrapper是非透明的)調(diào)度thread,進(jìn)行fork和kill和application(php)進(jìn)行通信。

感謝各位的閱讀,以上就是“apache+PHP和ngnix+php的區(qū)別是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對apache+PHP和ngnix+php的區(qū)別是什么這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI