青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

FastCGI的工作原理

1、Web Server啟動(dòng)時(shí)載入FastCGI進(jìn)程管理器(IIS ISAPI或Apache Module)

2、FastCGI進(jìn)程管理器自身初始化,啟動(dòng)多個(gè)CGI解釋器進(jìn)程(可見多個(gè)php-cgi)并等待來自Web Server的連接。

3、當(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。

4、FastCGI子進(jìn)程完成處理后將標(biāo)準(zhǔn)輸出和錯(cuò)誤信息從同一連接返回Web Server。當(dāng)FastCGI子進(jìn)程關(guān)閉連接時(shí),請(qǐng)求便告處理完成。FastCGI子進(jìn)程接著等待并處理來自FastCGI進(jìn)程管理器(運(yùn)行在Web Server中)的下一個(gè)連接。 在CGI模式中,php-cgi在此便退出了。

在上述情況中,你可以想象CGI通常有多慢。每一個(gè)Web請(qǐng)求PHP都必須重新解析php.ini、重新載入全部擴(kuò)展并重初始化全部數(shù)據(jù)結(jié)構(gòu)。使用FastCGI,所有這些都只在進(jìn)程啟動(dòng)時(shí)發(fā)生一次。一個(gè)額外的好處是,持續(xù)數(shù)據(jù)庫(kù)連接(Persistent database connection)可以工作。

 

這個(gè)很容易找到。也容易理解,但是繼續(xù)google之后,發(fā)現(xiàn)自己的概念又模糊了。

比如有些例子用

spawn-fcgi

/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u root -g root -f /usr/bin/php-cgi

 

參數(shù)含義如下

 

  1. -f <fcgiapp> 指定調(diào)用FastCGI的進(jìn)程的執(zhí)行程序位置,根據(jù)系統(tǒng)上所裝的PHP的情況具體設(shè)置
  2. -a <addr> 綁定到地址addr
  3. -p <port> 綁定到端口port
  4. -s <path> 綁定到unix socket的路徑path
  5. -C <childs> 指定產(chǎn)生的FastCGI的進(jìn)程數(shù),默認(rèn)為5(僅用于PHP)
  6. -P <path> 指定產(chǎn)生的進(jìn)程的PID文件路徑
  7. -u和-g FastCGI使用什么身份(-u 用戶 -g 用戶組)運(yùn)行,Ubuntu下可以使用www-data,其他的根據(jù)情況配置,如nobody、apache等

 

剛看到FastCGI原理的時(shí)候,我想象中的運(yùn)行模型是,前端的反向代理服務(wù)器如Nginx收到請(qǐng)求,然后轉(zhuǎn)發(fā)給cgi進(jìn)程,這個(gè)cgi進(jìn)程有N個(gè),從而實(shí)現(xiàn)并發(fā)處理。但是接下來搜索到的C語言實(shí)現(xiàn)的FastCGI應(yīng)用的例子好像又把這個(gè)模型給否定了。并且fastcgi是語言無關(guān)的,難道你要用python寫并發(fā)?

#include "fcgi_stdio.h"
#include <stdlib.h>
int count;
void initialize(void)
{
    count=0;
}
void main(void)
{
initialize();
 
while (FCGI_Accept() >= 0)   {
   printf("Content-type: text/html“r“n"
     "“r“n"
     "<title>FastCGI Hello! (C, fcgi_stdio library)</title>"
     "<h1>FastCGI Hello! (C, fcgi_stdio library)</h1>"
     "Request number %d running on host <i>%s</i>“n",
     ++count, getenv("SERVER_HOSTNAME"));
    }
}

這個(gè)代碼看不出來有任何并發(fā)處理的部分。比如fork什么的。

 

 

另外一種模型就是有一種叫做FastCGI進(jìn)程管理器的進(jìn)程,就像上面說的是管理fastcgi進(jìn)程的進(jìn)程,請(qǐng)求轉(zhuǎn)發(fā)到管理器的時(shí)候,由它來進(jìn)行選擇相應(yīng)的應(yīng)用進(jìn)程,卡就卡在這了,這個(gè)管理器是怎么來選擇進(jìn)程的啊,假如我有N個(gè)不同邏輯的可執(zhí)行文件,它怎么知道要轉(zhuǎn)發(fā)給哪個(gè)進(jìn)程呢,google到的fastcgi配置都是針對(duì)反向代理的后端也即管理器設(shè)置的,沒有發(fā)現(xiàn)有針對(duì)不同邏輯發(fā)給不同的應(yīng)用進(jìn)程的部分。

 

繼續(xù)狂搜,還是無果,都是類似的文章。網(wǎng)上搜索不到的問題,要么就是很難很偏,要么就是很簡(jiǎn)單,簡(jiǎn)單到不值一提,很顯然,我屬于后者。轉(zhuǎn)換思路,開始考慮假如要自己來實(shí)現(xiàn)這個(gè)功能的話該怎么辦。一步步地推理,在結(jié)合搜索到的文章,大概理清了思路,我的理解如下,不對(duì)的地方請(qǐng)指正。

 

1.有一個(gè)CGI進(jìn)程管理器,這個(gè)管理器一般是用第3方的fastcgi開發(fā)套件,比如上面提到的spawn-fcgi ,用它可以啟動(dòng)指定可執(zhí)行文件的N個(gè)實(shí)例,關(guān)于之前選擇進(jìn)程的疑問,這里可以得到解釋,那就是多個(gè)進(jìn)程只是同一個(gè)可執(zhí)行文件的實(shí)例,假如你想把不同的模塊分開生成可執(zhí)行文件的話估計(jì)就得再啟動(dòng)多一個(gè)管理器了吧。

 

2.假如你是用python寫的fastcgi的應(yīng)用程序,那么當(dāng)你用管理器啟動(dòng)了100個(gè)實(shí)例的時(shí)候,也就相當(dāng)于啟動(dòng)了100個(gè)python解析器,如果是用C等靜態(tài)語言寫的話那還好,只是跟你寫的程序大小有關(guān)。

 

可能是沒有接觸過CGI程序的原因,讓我對(duì)這基本的模型都糾結(jié)了一下午,希望這篇文章能幫些初學(xué)者。


Feedback

# re: FastCGI運(yùn)行模型學(xué)習(xí)總結(jié)  回復(fù)  更多評(píng)論   

2012-01-06 10:38 by coolypf
為了提高并發(fā)度,_同一_ fastcgi進(jìn)程可以fork多份,
這時(shí)session管理就成了問題,apache的mod_fcgi實(shí)現(xiàn)了session affinity,
nginx的話,可以自己用共享內(nèi)存實(shí)現(xiàn),或者用memcached。
覺得麻煩的話,可以用FastCGI++這個(gè)庫(kù),不必fork也可以有很好的并發(fā)度。

posts - 15, comments - 18, trackbacks - 0, articles - 0

Copyright © 冷鋒

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产亚洲精品激情久久| 久久免费视频在线观看| 国产在线拍揄自揄视频不卡99| 亚洲全黄一级网站| 韩国av一区二区三区| 性18欧美另类| 欧美一区二区在线视频| 国产精品久久久久一区| 在线一区二区三区四区五区| 亚洲砖区区免费| 国产精品久久久久久久久搜平片 | 香蕉久久精品日日躁夜夜躁| 欧美片网站免费| 亚洲精品男同| 亚洲永久视频| 国产三级欧美三级| 久久久久国产精品一区二区| 免费看成人av| 亚洲美女诱惑| 欧美色图五月天| 亚洲一区二区三区四区在线观看| 欧美午夜精品久久久| 一区二区三区免费网站| 欧美一区二区三区喷汁尤物| 国产日韩欧美在线播放不卡| 久久国产精品久久国产精品| 欧美大片一区二区三区| aa亚洲婷婷| 国产模特精品视频久久久久 | 欧美电影免费观看大全| 亚洲精品九九| 国产精品成人免费| 久久国产一二区| 亚洲韩国精品一区| 午夜国产欧美理论在线播放 | 欧美福利小视频| 一本色道久久综合亚洲精品不卡 | 亚洲欧洲三级| 国产精品久久7| 久久国产日韩欧美| 亚洲精品视频免费观看| 欧美一区二区三区免费观看| 激情综合网址| 欧美理论在线| 欧美中文字幕在线| 最近看过的日韩成人| 欧美亚洲免费高清在线观看| 亚洲国语精品自产拍在线观看| 欧美性色综合| 麻豆av福利av久久av| 在线视频日本亚洲性| 久久亚洲精品视频| 亚洲网友自拍| 亚洲成人自拍视频| 国产精品激情电影| 欧美高清在线一区| 欧美在线一区二区| 日韩视频免费观看| 蜜桃av一区| 久久国产精品色婷婷| 一区二区三区日韩欧美| 在线日本成人| 国产亚洲欧美日韩美女| 欧美日韩国产区一| 久久夜色精品| 校园春色国产精品| 一区二区三区视频免费在线观看| 欧美va天堂在线| 欧美一级黄色网| 亚洲最黄网站| 亚洲黄色在线| 狠狠噜噜久久| 国产视频亚洲精品| 国产精品ⅴa在线观看h| 欧美精品一区二区三区在线播放| 久久精品一区蜜桃臀影院 | 噜噜噜躁狠狠躁狠狠精品视频| 亚洲一区二区精品视频| 亚洲人成高清| 亚洲国产精品电影| 黑人操亚洲美女惩罚| 国产精品亚洲成人| 国产精品高清网站| 欧美日韩一区二区高清| 欧美福利小视频| 欧美国产精品v| 欧美va亚洲va日韩∨a综合色| 性色av一区二区三区| 亚洲综合第一页| 亚洲小少妇裸体bbw| 欧美一区二区三区在线| 中文无字幕一区二区三区| 亚洲美女av在线播放| 亚洲激情亚洲| 亚洲国产精品尤物yw在线观看| 国一区二区在线观看| 国产视频精品xxxx| 国内揄拍国内精品少妇国语| 国产日本欧美一区二区三区| 国产精品一区久久| 国产欧美日韩另类视频免费观看| 国产精品一卡二| 国产欧美日本一区视频| 国产日韩一区二区三区在线播放| 国产亚洲精品一区二区| 黑人一区二区三区四区五区| 一区二区在线不卡| 亚洲经典在线看| 99re在线精品| 亚洲综合精品四区| 欧美制服第一页| 久久中文久久字幕| 欧美激情在线免费观看| 亚洲精品久久久久久下一站| 99在线精品观看| 亚洲自拍偷拍网址| 久久久久久999| 欧美高清在线精品一区| 国产精品成人v| 韩日精品在线| 99国产成+人+综合+亚洲欧美| 亚洲专区一区二区三区| 久久国产欧美精品| 老司机67194精品线观看| 牛牛精品成人免费视频| 亚洲人成在线影院| 亚洲性图久久| 久久婷婷丁香| 欧美区在线观看| 国产欧美精品在线播放| 在线观看亚洲专区| 中文国产成人精品| 久久米奇亚洲| 亚洲精品在线三区| 性欧美激情精品| 欧美成人中文| 国产精品手机视频| 亚洲国产成人在线播放| 亚洲伊人第一页| 欧美va天堂va视频va在线| 99精品免费网| 久久午夜电影网| 国产精品啊v在线| 在线观看日韩精品| 亚洲婷婷在线| 欧美成年人网站| 亚洲在线播放电影| 欧美激情欧美狂野欧美精品| 国产日产高清欧美一区二区三区| 亚洲国产日本| 欧美在线欧美在线| 亚洲精选91| 麻豆精品在线视频| 国产精品综合视频| 99国内精品久久| 欧美mv日韩mv亚洲| 西瓜成人精品人成网站| 欧美日韩亚洲激情| 91久久精品国产91久久| 欧美专区福利在线| 亚洲精品一区在线观看香蕉| 久久久久一区二区| 国产精品视频免费一区| 亚洲人成网站影音先锋播放| 欧美与欧洲交xxxx免费观看| 亚洲美女av黄| 欧美国产精品专区| 亚洲成人在线视频网站| 欧美在线综合| 亚洲欧美久久久久一区二区三区| 欧美日韩国产成人高清视频| 亚洲国产裸拍裸体视频在线观看乱了| 欧美亚洲一区二区三区| 99在线精品视频在线观看| 免费观看成人| 在线日韩中文字幕| 久久久精品国产免大香伊 | 精品动漫av| 欧美一区1区三区3区公司| 亚洲精品麻豆| 欧美sm视频| 亚洲高清免费视频| 久久综合综合久久综合| 性欧美大战久久久久久久久| 国产精品卡一卡二| 亚洲自拍16p| 一区二区三区四区五区视频 | 欧美日韩亚洲系列| 99精品视频免费| 亚洲国产综合91精品麻豆| 免费欧美日韩国产三级电影| 亚洲大胆人体视频| 欧美sm极限捆绑bd| 可以看av的网站久久看| 在线欧美小视频| 欧美激情二区三区| 欧美高清视频免费观看| 日韩一区二区久久| 99人久久精品视频最新地址| 欧美日韩一区在线播放|