這篇文章給大家分享的是有關(guān)workerman程序在PHP中的運行模式有哪些的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設計、網(wǎng)站建設與策劃設計,黃巖網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設10多年,網(wǎng)設計領(lǐng)域的專業(yè)建站公司;建站業(yè)務涵蓋:黃巖等地區(qū)。黃巖做網(wǎng)站價格咨詢:18982081108
我們知道workerman程序需要在php-cli模式下運行,也就是命令行模式,這塊我們有必要了解一下。話說PHP當下一共有4種運行模式,分別是CGI、FastCGI、CLI和Web模塊模式。
CGI
全稱是“通用網(wǎng)關(guān)接口”(CommonGatewayInterface),它可以讓一個客戶端,從網(wǎng)頁瀏覽器向執(zhí)行在Web服務器上的程序請求數(shù)據(jù),描述的是客戶端和這個程序之間傳輸數(shù)據(jù)的一種標準,另外CGI獨立于任何語言,所以可以用任何一種語言編寫,只要這種語言具有標準輸入、輸出和環(huán)境變量。如php,perl,tcl等。
CGI針對每個用戶請求都要開單獨的子進程去維護,所以數(shù)量多的時候會出現(xiàn)性能問題,最近幾年很少用。
FastCGI
CGI的升級版本,F(xiàn)astCGI像是一個常駐(long-live)型的CGI,它可以一直執(zhí)行著,只要激活后,不會每次都要花費時間去解析php.ini、重新載入全部dll擴展并重初始化全部數(shù)據(jù)結(jié)構(gòu)。
PHP使用PHP-FPM(FastCGIProcessManager),全稱PHPFastCGI進程管理器進行管理。
FastCGI工作原理
WebServer啟動時載入FastCGI進程管理器;
FastCGI進程管理器自身初始化,啟動多個CGI解釋器進程并等待來自WebServer的連接;
當客戶端請求到達WebServer時,F(xiàn)astCGI進程管理器選擇并連接到一個CGI解釋器。Webserver將CGI環(huán)境變量和標準輸入發(fā)送到FastCGI子進程php-cgi。
FastCGI子進程完成處理后將標準輸出和錯誤信息從同一連接返回WebServer。當FastCGI子進程關(guān)閉連接時,請求便告處理完成。FastCGI子進程接著等待并處理來自FastCGI進程管理器的下一個連接。
在正常的CGI模式中,這就結(jié)束了,下次還要重新來過。但是在FastCGI,所有這些都只在進程啟動時發(fā)生一次。一個額外的好處是,持續(xù)數(shù)據(jù)庫連接(Persistentdatabaseconnection)可以工作。
Cli
PHP-CLI是PHPCommandLineInterface的簡稱,就是PHP在命令行運行的接口,區(qū)別于在Web服務器上運行的PHP環(huán)境(PHP-CGI等)。
我們在Linux下經(jīng)常使用”php–m”查找PHP安裝了那些擴展就是PHP命令行運行模式。你可以打入php-h來看看具體都有什么命令。
在php-cli模式下我們可以直接啟動一個php文件并執(zhí)行,就像workerman中一樣
phpindex.phpstart
要說明的是,php-cli模式并沒有php運行超時的說法。
Module加載
一般是針對apache而言的,這種方式,他們的共同本質(zhì)都是用LoadModule來加載phpX_module,就是把php作為apache的一個子模塊來運行。當通過web訪問php文件時,apache就會調(diào)用phpX_module來解析php代碼,那么phpX_module是怎么來將數(shù)據(jù)傳給php解析器來解析php代碼的呢?答案是通過sapi。
所以,以上的apache調(diào)用php執(zhí)行的過程如下:
apache->httpd->php5_module->sapi->php
apache每接收一個請求,都會產(chǎn)生一個進程來連接php通過sapi來完成請求,可想而知,如果一旦用戶過多,并發(fā)數(shù)過多,服務器就會承受不住了。
而且,把mod_php編進apache時,出問題時很難定位是php的問題還是apache的問題。
小結(jié)
如果要搭建一個高性能的PHPWEB服務器,目前最佳的方式是Apache/Nginx+FastCGI+PHP-FPM(+PHP-CGI)方式了,不要再使用Module加載或者CGI方式啦
感謝各位的閱讀!關(guān)于“workerman程序在PHP中的運行模式有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
當前標題:workerman程序在PHP中的運行模式有哪些
文章出自:http://jinyejixie.com/article28/iehccp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、網(wǎng)站設計公司、域名注冊、定制網(wǎng)站、軟件開發(fā)、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)