日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

mod_php對比mod_fastcgi

系統(tǒng) 2511 0

什么是mod_php和mod_fastcgi

在lamp體系中,對于apache端的php的配置,我們最常用的就是mod_php,它把php作為apache一個內(nèi)置的模塊.讓apache http服務(wù)器本身能夠支持php語言,不需要每一個請求就啟動php解釋器來解釋php.
和把webserver與php綁定起來的方式不同,fastcgi是http服務(wù)器與你的或其它機(jī)器上的程序進(jìn)行“交談”的一種工具,相當(dāng)于一個程序接口。它可以接受來自web服務(wù)器的請求,解釋輸入信息,將處理后的結(jié)果返回給服務(wù)器等。mod_fastcgi就是在apache下支持fastcgi協(xié)議的模塊。


SAPI和CLI

SAPI(Server Application Programming Interface):服務(wù)器端應(yīng)用程序接口
CLI(Command Line Interface):命令行接口


php運(yùn)行原理



對于一個基于apache的php應(yīng)用,運(yùn)行流程可以簡單歸結(jié)為:
Apache -> httpd -> mod_php -> fastcgi -> sapi -> php


mod_php

在lamp體系中,mod_php是最常使用的工作方式。在這種模式下,php被編譯為apache的一個內(nèi)置模塊,在啟動加載的時候,當(dāng)有一個php請求過來,直接在httpd進(jìn)程里完成了php的解釋運(yùn)行,將結(jié)果返回。工作原理如圖所示:


mod_fastcgi


普通cgi的工作流程:

CGI英文全程是 Command Gateway Interface,通常翻譯為公共網(wǎng)關(guān)接口,是HTTP服務(wù)器與機(jī)器上的其他程序進(jìn)行通信的一個接口。這個“其他程序”可以是使用任何計(jì)算機(jī)語言進(jìn)行編寫,例如php,python,perl等等。它通過CGI這個接口從HTTP服務(wù)器取得輸入,然后把運(yùn)行結(jié)果又通過CGI這個接口交給HTTP服務(wù)器,而HTTP服務(wù)器把這個結(jié)果送給瀏覽器。
CGI的出現(xiàn)讓W(xué)EB從靜態(tài)變?yōu)閯討B(tài),隨著web的越來越普及,很多的網(wǎng)站都需要有動態(tài)的頁面,以便與瀏覽者進(jìn)行交互。CGI的缺點(diǎn)也越來越突出,因?yàn)镠TTP要生成一個動態(tài)頁面,系統(tǒng)就必須啟動一個新的進(jìn)程以運(yùn)行CGI程序,不斷的fork是一項(xiàng)很消耗時間和資源的工作。


fastcgi工作原理:

(1)web server 啟動時載入Fastcgi進(jìn)程管理器。[php的fastcgi進(jìn)程管理器是PHP-FPM(php-FastCGI Process Manager)]
(2)Fastcgi進(jìn)程管理器自身初始化,啟動多個CGI解釋器進(jìn)程并且等待來自web server的連接。啟動php-cgi Fastcgi進(jìn)程時,可以配置TCP和unix套接字兩種方式。一般生產(chǎn)環(huán)境中采用TCP方式
(3)當(dāng)客戶端請求到達(dá)web server時,web server 通過tcp協(xié)議或者unix套接字的方式將請求轉(zhuǎn)發(fā)給Fastcgi主進(jìn)程,F(xiàn)astcgi主進(jìn)程選擇并連接一個cgi進(jìn)程。

(4)Fastcgi子進(jìn)程完成php程序流程處理后將標(biāo)準(zhǔn)輸出和錯誤信息一同返回給web server。當(dāng)Fastcgi子進(jìn)程關(guān)閉時,請求便告處理完成。Fastcgi子進(jìn)程便接著等待來自Fastcgi進(jìn)程管理器的下一個連接。

(5)fastcgi是基于cgi架構(gòu)的擴(kuò)展,他的核心思想就是在web server和具體cgi程序之間建立一個智能的可持續(xù)的中間層,統(tǒng)管cgi程序的運(yùn)行,這樣web server只需要將請求提交給這個層,這個層再派生出幾個可復(fù)用的cgi程序?qū)嵗缓笤侔颜埱蠓职l(fā)給這些實(shí)例,這些實(shí)例是可控的,可持續(xù),可復(fù)用的。mod_fastcgi的主要優(yōu)點(diǎn)是把動態(tài)語言和web server分離開來。這種技術(shù)允許把web server 和 動態(tài)語言運(yùn)行在不同的主機(jī)上,以大規(guī)模擴(kuò)展和改進(jìn)安全性而不損失生產(chǎn)效率。
基于mod_fastcgi方式的php應(yīng)用,工作流程如下:


mod_fastcgi遠(yuǎn)程配置方式

fastcgi實(shí)例和apache分離開來,這兩者可以分開來部署。他們之間的通信通過tcp或者unix sock來完成。使用ext方式,fastcgi實(shí)例是獨(dú)立運(yùn)行的。


php-fpm

使用fastcgi,最主要的優(yōu)點(diǎn)是把應(yīng)用和web server(apache)分離開來。這樣允許把web server 和動態(tài)語言(php)運(yùn)行在不同的主機(jī)上,以大規(guī)模擴(kuò)展和改進(jìn)安全性而不損失效率。
這樣情況下,對于php-cgi程序,由于從apache中分離出來,就需要一個單獨(dú)的工具來對這些進(jìn)程進(jìn)行管理,幸運(yùn)的就是php-fpm的出現(xiàn)。


特性

(1)php守護(hù)進(jìn)程:pid file,log file,setsid(),setuid(),setgid(),chroot()
(2)進(jìn)程控制,可以平滑的重啟,重新載入配置和二進(jìn)制模塊而不丟失請求
(3)限制ip地址,可以滿足web server的要求
(4)使用用不同的uid/gid/chroot/環(huán)境變量,不同的php.ini選項(xiàng),不需要safe mode
(5)記錄word process的stdout和stderr
(6)如果set_time_limit沒有起作用,強(qiáng)制結(jié)束過期進(jìn)程


特色功能:

(1)fastcgi_finish_request()函數(shù):響應(yīng)完成,關(guān)閉連接
(2)優(yōu)化上傳支持
(3)特色功能Error header


參考文獻(xiàn):

mod_php對比mod_fastcgi


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 竹溪县| 龙门县| 平顶山市| 鸡西市| 钟山县| 邹城市| 海盐县| 江安县| 新宁县| 新疆| 乾安县| 嘉义县| 崇仁县| 石棉县| 囊谦县| 前郭尔| 同仁县| 阳谷县| 呼和浩特市| 平顺县| 开封市| 马龙县| 伊金霍洛旗| 庆云县| 甘德县| 湖南省| 张家港市| 甘孜| 泰安市| 米脂县| 资中县| 唐山市| 大港区| 沧州市| 佛教| 五原县| 屏边| 贵阳市| 苍山县| 黔东| 阜阳市|