成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

workerman / 小談PHP中的幾種運(yùn)行模式

darkbaby123 / 816人閱讀

摘要:話說當(dāng)下一共有種運(yùn)行模式,分別是和模塊模式。使用,全稱進(jìn)程管理器進(jìn)行管理。工作原理啟動(dòng)時(shí)載入進(jìn)程管理器進(jìn)程管理器自身初始化,啟動(dòng)多個(gè)解釋器進(jìn)程并等待來自的連接當(dāng)客戶端請求到達(dá)時(shí),進(jìn)程管理器選擇并連接到一個(gè)解釋器。

我們知道 workerman 程序需要在php-cli模式下運(yùn)行,也就是命令行模式,這塊我們有必要了解一下。

話說PHP當(dāng)下一共有4種運(yùn)行模式,分別是CGI、FastCGI、CLI和Web模塊模式。

CGI

全稱是“通用網(wǎng)關(guān)接口”(Common Gateway Interface), 它可以讓一個(gè)客戶端,從網(wǎng)頁瀏覽器向執(zhí)行在Web服務(wù)器上的程序請求數(shù)據(jù),描述的是客戶端和這個(gè)程序之間傳輸數(shù)據(jù)的一種標(biāo)準(zhǔn),另外CGI獨(dú)立于任何語言,所以可以用任何一種語言編寫,只要這種語言具有標(biāo)準(zhǔn)輸入、輸出和環(huán)境變量。如php,perl,tcl等。

CGI針對每個(gè)用戶請求都要開多帶帶的子進(jìn)程去維護(hù),所以數(shù)量多的時(shí)候會(huì)出現(xià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)程并等待來自Web Server的連接;

當(dā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í),請求便告處理完成。FastCGI子進(jìn)程接著等待并處理來自FastCGI進(jìn)程管理器的下一個(gè)連接。

在正常的CGI模式中,這就結(jié)束了,下次還要重新來過。但是在FastCGI,所有這些都只在進(jìn)程啟動(dòng)時(shí)發(fā)生一次。一個(gè)額外的好處是,持續(xù)數(shù)據(jù)庫連接(Persistent database connection)可以工作。

Cli

PHP-CLI是PHP Command Line Interface的簡稱,就是PHP在命令行運(yùn)行的接口,區(qū)別于在Web服務(wù)器上運(yùn)行的PHP環(huán)境(PHP-CGI等)。

我們在Linux下經(jīng)常使用”php –m”查找PHP安裝了那些擴(kuò)展就是PHP命令行運(yùn)行模式。 你可以打入 php -h 來看看具體都有什么命令。

在php-cli模式下我們可以直接啟動(dòng)一個(gè)php文件并執(zhí)行,就像workerman中一樣

php index.php start

要說明的是,php-cli模式并沒有php運(yùn)行超時(shí)的說法。

Module加載

一般是針對apache而言的,這種方式,他們的共同本質(zhì)都是用 LoadModule 來加載 phpX_module,就是把php作為apache的一個(gè)子模塊來運(yùn)行。當(dāng)通過web訪問php文件時(shí),apache就會(huì)調(diào)用phpX_module來解析php代碼,那么phpX_module是怎么來將數(shù)據(jù)傳給php解析器來解析php代碼的呢?答案是通過sapi。

所以,以上的apache調(diào)用php執(zhí)行的過程如下:

apache -> httpd -> php5_module -> sapi -> php

apache每接收一個(gè)請求,都會(huì)產(chǎn)生一個(gè)進(jìn)程來連接php通過sapi來完成請求,可想而知,如果一旦用戶過多,并發(fā)數(shù)過多,服務(wù)器就會(huì)承受不住了。

而且,把mod_php編進(jìn)apache時(shí),出問題時(shí)很難定位是php的問題還是apache的問題。

小結(jié)

如果要搭建一個(gè)高性能的PHP WEB服務(wù)器,目前最佳的方式是Apache/Nginx + FastCGI + PHP-FPM(+PHP-CGI)方式了,不要再使用 Module加載或者 CGI 方式啦

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28547.html

相關(guān)文章

  • workerman / 學(xué)習(xí)workerman之前需要知道的幾種php回調(diào)寫法

    摘要:在中最常用的幾種回調(diào)寫法如下匿名函數(shù)做為回調(diào)匿名函數(shù),也叫閉包函數(shù),允許臨時(shí)創(chuàng)建一個(gè)沒有指定名稱的函數(shù)。最經(jīng)常用作回調(diào)函數(shù)參數(shù)的值。匿名函數(shù)的回調(diào)經(jīng)常將其賦給一個(gè)變量或一個(gè)對象的屬性最終結(jié)果會(huì)輸出。 在workerman中會(huì)經(jīng)常使用,我們先寫一個(gè)回調(diào)函數(shù),當(dāng)某個(gè)行為被觸發(fā)后使用該函數(shù)處理相關(guān)邏輯。 在PHP中最常用的幾種回調(diào)寫法如下 匿名函數(shù)做為回調(diào) 匿名函數(shù)(Anonymous fu...

    Java_oldboy 評論0 收藏0
  • PHP定時(shí)器那點(diǎn)事

    摘要:如果把改成,還能實(shí)現(xiàn)微秒納秒級(jí)定時(shí)器,豈不美哉實(shí)踐中應(yīng)當(dāng)盡量避免用這種方式實(shí)現(xiàn)定時(shí)器,不僅因?yàn)榈托В€略有危險(xiǎn)。接下來看看中使用定時(shí)器的正確姿勢。在這種形式下,實(shí)現(xiàn)定時(shí)器就有多種玩法。 轉(zhuǎn)載請注明文章來源:https://tlanyan.me/timer-in-php/ 常見的定時(shí)器有兩種:一種周期性定時(shí)執(zhí)行,例如每天的凌晨三點(diǎn)出報(bào)表;另一種在指定時(shí)間后執(zhí)行(一次),例如會(huì)員登錄系統(tǒng)...

    tyheist 評論0 收藏0
  • ThinkPHP 3.2 整合 Workerman 踩坑

    摘要:一號(hào)坑整合加載第三方有幾種方式,具體參考官方手冊我用的是第一種命名空間自動(dòng)加載的方式,因?yàn)槲蚁碌陌姹臼怯忻臻g的,所以一定要把目錄放對了,把文件夾放到下,并且把里面除文件外的所有文件改為結(jié)尾。 由于需要開發(fā)長連接應(yīng)用,要用到了Workerman,我是Windows的服務(wù)器,所以要把Wokerman裝到windows,不得不說Windows做服務(wù)器那真是「好用」啊,一開始自己按照Wor...

    OpenDigg 評論0 收藏0
  • workerman 簡要分析

    摘要:后面每開啟一個(gè)子進(jìn)程,會(huì)將子進(jìn)程的存儲(chǔ)到中,用來后面主進(jìn)程監(jiān)控子進(jìn)程,如果子進(jìn)程意外終止,主進(jìn)程可以重新佛。將當(dāng)前子進(jìn)程設(shè)置為會(huì)話組再次創(chuàng)建子進(jìn)程,為了防止在的系統(tǒng)下重新打開控制終端。 wokerman 啟動(dòng)分析 @(學(xué)習(xí))[workerman, php] 前期想說的 也是最近才看的代碼,遇到不懂得地方就去google,所以這篇文章里面穿插了很多參考資料,可以直接點(diǎn)擊閱覽。 需要了解一...

    senntyou 評論0 收藏0
  • 部署web項(xiàng)目的過程記錄,包括laravel,redis,mongodb,workerman的配置過

    摘要:如果服務(wù)器中該賬號(hào)的鑰匙對已經(jīng)存在,并且已經(jīng)將放到該賬號(hào)的設(shè)置中,可以跳過這一步。如果不符合,需要根據(jù)提示安裝必要的擴(kuò)展。后續(xù)再進(jìn)行補(bǔ)充做守護(hù)隊(duì)列監(jiān)聽進(jìn)程和自動(dòng)部署到服務(wù)器的說明。 系統(tǒng)LAMP基礎(chǔ)環(huán)境是已經(jīng)搭建好,記錄要將web項(xiàng)目部署到線上的過程如下,方便后續(xù)部署新項(xiàng)目時(shí)參考: laravel項(xiàng)目ubuntu 16.04php 7.0 克隆項(xiàng)目到服務(wù)器 (1)我們使用 your@e...

    bluesky 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<