PHP運(yùn)行模式是什么

本文將為大家詳細(xì)介紹“PHP運(yùn)行模式是什么”,內(nèi)容步驟清晰詳細(xì),細(xì)節(jié)處理妥當(dāng),而小編每天都會更新不同的知識點(diǎn),希望這篇“PHP運(yùn)行模式是什么”能夠給你意想不到的收獲,請大家跟著小編的思路慢慢深入,具體內(nèi)容如下,一起去收獲新知識吧。

壽陽網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),壽陽網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為壽陽超過千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的壽陽做網(wǎng)站的公司定做!

php有什么用

php是一個嵌套的縮寫名稱,指的是英文超級文本預(yù)處理語言(php:Hypertext Preprocessor)的縮寫,它的語法混合了C、Java、Perl以及php自創(chuàng)新的語法,主要用來做網(wǎng)站開發(fā),許多小型網(wǎng)站都用php開發(fā),因為php是開源的,從而使得php經(jīng)久不衰。

PHP有五種運(yùn)行模式,常見的有4種:

1.CGI(通用網(wǎng)關(guān)接口/ Common Gateway Interface)
2.FastCGI(常駐型CGI / Long-Live CGI)
3.CLI(命令行運(yùn)行 / Command Line Interface)
4.LoadModule【Apache獨(dú)有】
5.ISAPI(Internet Server Application Program Interface)【IIS獨(dú)有】

備注:在PHP5.3以后,PHP不再有ISAPI模式,安裝后也不再有php5isapi.dll這個文件。要在IIS6上使用高版本PHP,必須安裝FastCGI 擴(kuò)展,然后使IIS6支持FastCGI。

查看當(dāng)前運(yùn)行模式
echo php_sapi_name();

CGI模式

介紹:

CGI即通用網(wǎng)關(guān)接口(Common Gateway Interface),它是一段程序,通俗的講CGI就象是一座橋,把網(wǎng)頁和Web服務(wù)器中的執(zhí)行程序連接起來,它把HTML接收的指令傳遞給服務(wù)器的執(zhí)行程序,再把服務(wù)器執(zhí)行程序的結(jié)果返還給HTML頁。CGI 的跨平臺性能極佳,幾乎可以在任何操作系統(tǒng)上實現(xiàn)。

調(diào)用過程:Fork-And-Execute模式

用戶請求  —> web服務(wù)器接收請求【常用Nginx、apache】—> fork CGI的子進(jìn)程&處理請求 —-> 請求處理完畢,返回結(jié)果到web服務(wù)器&銷毀子進(jìn)程 —> web服務(wù)器返回結(jié)果給用戶

圖解:
PHP運(yùn)行模式是什么
優(yōu)勢:

作為PHP最早的運(yùn)行模式,每次請求都獨(dú)立處理,調(diào)用過程足夠簡單清晰,可控性強(qiáng)
進(jìn)程間是隔離的,保證數(shù)據(jù)不會被污染

劣勢:

每次請求都需要fork一個新的CGI子進(jìn)程,假如同一時間并發(fā)請求一千,意味著就要fork一千個子進(jìn)程,這就會導(dǎo)致幾個問題:

  1. fork子進(jìn)程需要時間,需要占用內(nèi)存【copy-on-write】

  2. 子進(jìn)程過多,會導(dǎo)致CPU將大量的時間花費(fèi)在上下文切換上

  3. 每次請求需要重新加載相關(guān)資源

FastCGI模式

介紹:

FastCGI是CGI的升級版本,F(xiàn)astCGI像是一個常駐 (long-live)型的 CGI,在啟動web服務(wù)器的時候載入FastCGI進(jìn)程管理器【PHP-FPM、IIS ISAPI、Apache Module】,當(dāng)有請求過來的時候,web服務(wù)器只需要交給FastCGI進(jìn)程管理器處理即可。
調(diào)用過程:以 PHP-FPM 為例

web服務(wù)器啟動的時候 啟動 PHP-FPM master進(jìn)程(主要負(fù)責(zé)分配請求給空閑的自子進(jìn)程處理)以及一定數(shù)量的fast-cgi子進(jìn)程(負(fù)責(zé)處理請求)。 PHP-FPM  master進(jìn)程管理一個進(jìn)程池,池里有若干個fast-cgi子進(jìn)程,每個fast-cgi子進(jìn)程單獨(dú)處理一個請求,互不干涉。

用戶請求 —> web服務(wù)器接收請求【常用Nginx、apache】—> 檢測到是PHP請求&轉(zhuǎn)發(fā)給FPM master進(jìn)程  —>  FPM master進(jìn)程 指定空閑fast-cgi子進(jìn)程處理請求  —> 子進(jìn)程載入文件(如php.ini)及其他資源處理請求  —>  處理結(jié)束&清除資源,結(jié)果返回master & 子進(jìn)程掛起,標(biāo)記為空閑—>  master 將結(jié)果返回web服務(wù)器 —> web服務(wù)器返回結(jié)果給用戶

圖解:
PHP運(yùn)行模式是什么
優(yōu)勢:

  1. 從穩(wěn)定性上看,F(xiàn)astCGI是以獨(dú)立的進(jìn)程池來運(yùn)行CGI,單獨(dú)一個進(jìn)程死掉,系統(tǒng)可以很輕易的丟棄,然后重新分配新的進(jìn)程來運(yùn)行邏輯

  2. 從安全性上看,F(xiàn)astCGI和宿主的web Server完全獨(dú)立,F(xiàn)astCGI 不會影響web 服務(wù)器的運(yùn)行【如果PHP-FPM處于關(guān)閉狀態(tài),則會返回502 bad gateway 給用戶】

  3. 從性能上看,F(xiàn)astCGI把動態(tài)邏輯的處理從 web Server中分離出來,大負(fù)荷的IO處理還是留給宿主Server,這樣宿主Server可以一心一意作IO【對于一個普通的動態(tài)網(wǎng)頁來說, 邏輯處理可能只有一小部分,更多的是圖片等靜態(tài)資源的加載】

劣勢:

一個fast-cgi子進(jìn)程同一時間只能處理一個請求,所以網(wǎng)站的并發(fā)性能就受限于子進(jìn)程數(shù)量
如果開啟的進(jìn)程過多,會導(dǎo)致CPU將大量的時間浪費(fèi)在進(jìn)程的上下文切換上。
每次請求fast-cgi子進(jìn)程都需要重新加載相關(guān)資源,請求結(jié)束需要釋放資源

CLI(命令行運(yùn)行 / Command Line Interface)

簡介:

php-cli模式屬于命令行模式,對于很多剛開始學(xué)php就開始wamp,wnmp的開發(fā)者來說是最陌生的一種運(yùn)行模式
該模式不需要借助其他程序,直接輸入php xx.php 就能執(zhí)行php代碼
命令行模式和常規(guī)web模式明顯不一樣的是:
沒有超時時間
默認(rèn)關(guān)閉buffer緩沖
STDIN和STDOUT標(biāo)準(zhǔn)輸入/輸出/錯誤 的使用
echo var_dump,phpinfo等輸出直接輸出到控制臺
可使用的類/函數(shù) 不同
php.ini配置的不同

PS:詳見官方文檔:www.php.net/manual/zh/features.com...

LoadModule(Apache獨(dú)有)

 “D:/…/php71/php7apache2_4.dll”起到的作用就是這個

調(diào)用過程:

用戶請求 —>  Apache 服務(wù)器 —>  調(diào)用mod_php5模塊處理請求 —> 返回請求結(jié)果給Apache —> Apache 返回結(jié)果給用戶

圖解:
PHP運(yùn)行模式是什么

ISAPI(Internet Server Application Program Interface)

簡介:

在PHP5.3以后,PHP不再有ISAPI模式,安裝后也不再有php5isapi.dll這個文件。要在IIS6上使用高版本PHP,必須安裝FastCGI 擴(kuò)展,然后使IIS6支持FastCGI。故此處不做過多介紹

圖解:
PHP運(yùn)行模式是什么

寫在最后:

在互聯(lián)網(wǎng)爆炸式發(fā)展的今天,絕大多數(shù)網(wǎng)站都需要考慮網(wǎng)站的高并發(fā)性能。Nginx由于其輕量和出色的并發(fā)性能等優(yōu)點(diǎn),越來越多的受到開發(fā)者的青睞。曾經(jīng)火爆全網(wǎng)的 LAMP 組合已不是PHP開發(fā)者的第一選擇,異軍突起的 LNMP 組合已然成為 PHPer 的必修課,這導(dǎo)致基于 Apache 的LoadModule模式已越來越少被提及。
除此以外,用來寫命令行腳本CLI模式和幾乎絕跡的 ISAPI 模式顯然不適合建設(shè)網(wǎng)站。
作為 CGI 加強(qiáng)版的 Fast-CGI 模式在繼承了 CGI 簡單、安全的基礎(chǔ)上,使用PHP-FPM管理子進(jìn)程,使得web服務(wù)器更加專注的處理I/O,PHP-FPM管理維護(hù)一個進(jìn)程池,可提前 fork 一定數(shù)量的子進(jìn)程等待處理請求,既不用在請求到來時才fork子進(jìn)程,也不用在請求結(jié)束時就銷毀子進(jìn)程。

如果你能讀到這里,小編希望你對“PHP運(yùn)行模式是什么”這一關(guān)鍵問題有了從實踐層面最深刻的體會,具體使用情況還需要大家自己動手實踐使用過才能領(lǐng)會,如果想閱讀更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文題目:PHP運(yùn)行模式是什么
分享路徑:http://muchs.cn/article40/jpiseo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、電子商務(wù)微信公眾號、定制網(wǎng)站、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站