這篇文章主要介紹了workerman之PHP中運(yùn)行模式有哪些,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國(guó)際域名空間、網(wǎng)站空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、盤龍網(wǎng)站維護(hù)、網(wǎng)站推廣。
我們知道 workerman 程序需要在php-cli模式下運(yùn)行,也就是命令行模式,這塊我們有必要了解一下。話說(shuō)PHP當(dāng)下一共有4種運(yùn)行模式,分別是CGI、FastCGI、CLI和Web模塊模式。
CGI
全稱是“通用網(wǎng)關(guān)接口”(Common Gateway Interface), 它可以讓一個(gè)客戶端,從網(wǎng)頁(yè)瀏覽器向執(zhí)行在Web服務(wù)器上的程序請(qǐng)求數(shù)據(jù),描述的是客戶端和這個(gè)程序之間傳輸數(shù)據(jù)的一種標(biāo)準(zhǔn),另外CGI獨(dú)立于任何語(yǔ)言,所以可以用任何一種語(yǔ)言編寫,只要這種語(yǔ)言具有標(biāo)準(zhǔn)輸入、輸出和環(huán)境變量。如php,perl,tcl等。
CGI針對(duì)每個(gè)用戶請(qǐng)求都要開單獨(dú)的子進(jìn)程去維護(hù),所以數(shù)量多的時(shí)候會(huì)出現(xiàn)性能問(wèn)題,最近幾年很少用。
FastCGI
CGI的升級(jí)版本,F(xiàn)astCGI 像是一個(gè)常駐 (long-live) 型的 CGI,它可以一直執(zhí)行著,只要激活后,不會(huì)每次都要花費(fèi)時(shí)間去解析php.ini、重新載入全部dll擴(kuò)展并重初始化全部數(shù)據(jù)結(jié)構(gòu)。
PHP使用PHP-FPM(FastCGI Process Manager),全稱PHP FastCGI進(jìn)程管理器進(jìn)行管理。
FastCGI工作原理
Web Server啟動(dòng)時(shí)載入FastCGI進(jìn)程管理器;
FastCGI進(jìn)程管理器自身初始化,啟動(dòng)多個(gè)CGI解釋器進(jìn)程并等待來(lái)自Web Server的連接;
當(dāng)客戶端請(qǐng)求到達(dá)Web Server時(shí),F(xiàn)astCGI進(jìn)程管理器選擇并連接到一個(gè)CGI解釋器。Web server將CGI環(huán)境變量和標(biāo)準(zhǔn)輸入發(fā)送到FastCGI子進(jìn)程php-cgi。
FastCGI子進(jìn)程完成處理后將標(biāo)準(zhǔn)輸出和錯(cuò)誤信息從同一連接返回Web Server。當(dāng)FastCGI子進(jìn)程關(guān)閉連接時(shí),請(qǐng)求便告處理完成。FastCGI子進(jìn)程接著等待并處理來(lái)自FastCGI進(jìn)程管理器的下一個(gè)連接。
在正常的CGI模式中,這就結(jié)束了,下次還要重新來(lái)過(guò)。但是在FastCGI,所有這些都只在進(jìn)程啟動(dòng)時(shí)發(fā)生一次。一個(gè)額外的好處是,持續(xù)數(shù)據(jù)庫(kù)連接(Persistent database connection)可以工作。
Cli
PHP-CLI是PHP Command Line Interface的簡(jiǎn)稱,就是PHP在命令行運(yùn)行的接口,區(qū)別于在Web服務(wù)器上運(yùn)行的PHP環(huán)境(PHP-CGI等)。
我們?cè)贚inux下經(jīng)常使用”php –m”查找PHP安裝了那些擴(kuò)展就是PHP命令行運(yùn)行模式。 你可以打入 php -h 來(lái)看看具體都有什么命令。
在php-cli模式下我們可以直接啟動(dòng)一個(gè)php文件并執(zhí)行,就像workerman中一樣
php index.php start
要說(shuō)明的是,php-cli模式并沒(méi)有php運(yùn)行超時(shí)的說(shuō)法。
Module加載
一般是針對(duì)apache而言的,這種方式,他們的共同本質(zhì)都是用 LoadModule 來(lái)加載 phpX_module,就是把php作為apache的一個(gè)子模塊來(lái)運(yùn)行。當(dāng)通過(guò)web訪問(wèn)php文件時(shí),apache就會(huì)調(diào)用phpX_module來(lái)解析php代碼,那么phpX_module是怎么來(lái)將數(shù)據(jù)傳給php解析器來(lái)解析php代碼的呢?答案是通過(guò)sapi。
所以,以上的apache調(diào)用php執(zhí)行的過(guò)程如下:
apache -> httpd -> php5_module -> sapi -> php
apache每接收一個(gè)請(qǐng)求,都會(huì)產(chǎn)生一個(gè)進(jìn)程來(lái)連接php通過(guò)sapi來(lái)完成請(qǐng)求,可想而知,如果一旦用戶過(guò)多,并發(fā)數(shù)過(guò)多,服務(wù)器就會(huì)承受不住了。
而且,把mod_php編進(jìn)apache時(shí),出問(wèn)題時(shí)很難定位是php的問(wèn)題還是apache的問(wèn)題。
如果要搭建一個(gè)高性能的PHP WEB服務(wù)器,目前最佳的方式是Apache/Nginx + FastCGI + PHP-FPM(+PHP-CGI)方式了,不要再使用 Module加載或者 CGI 方式啦
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“workerman之PHP中運(yùn)行模式有哪些”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
當(dāng)前名稱:workerman之PHP中運(yùn)行模式有哪些
轉(zhuǎn)載來(lái)源:http://chinadenli.net/article14/geojge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、、手機(jī)網(wǎng)站建設(shè)、商城網(wǎng)站、靜態(tài)網(wǎng)站、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)