[好文]mod_php和mod_fastcgi和php-fpm的介紹,對(duì)比,和性能數(shù)據(jù).doc_第1頁(yè)
[好文]mod_php和mod_fastcgi和php-fpm的介紹,對(duì)比,和性能數(shù)據(jù).doc_第2頁(yè)
[好文]mod_php和mod_fastcgi和php-fpm的介紹,對(duì)比,和性能數(shù)據(jù).doc_第3頁(yè)
[好文]mod_php和mod_fastcgi和php-fpm的介紹,對(duì)比,和性能數(shù)據(jù).doc_第4頁(yè)
[好文]mod_php和mod_fastcgi和php-fpm的介紹,對(duì)比,和性能數(shù)據(jù).doc_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

mod php VS mod fastcgi 目錄目錄 什么是 MOD PHP 和 MOD FASTCGI 1 工作原理 1 MOD PHP 2 MOD FASTCGI 3 MOD FACTCGI 的三種配置方式 4 靜態(tài)配置 5 動(dòng)態(tài)配置 5 遠(yuǎn)程方式 6 PHP FPM 6 性能測(cè)試 8 名稱解釋 8 測(cè)試內(nèi)容 8 測(cè)試結(jié)果 8 FASTCGI 配置項(xiàng)對(duì)性能的影響 11 分析 結(jié)論 13 附錄 14 APACHE MOD FASTCGI PHP 搭建 14 什么是什么是 mod php 和和 mod fastcgi 在 lamp 體系中 對(duì)于 apache 端 php 的配置 我們最常用的就是 mod php 它把 PHP 做為 APACHE 一個(gè)內(nèi)置模塊 讓 apache http 服務(wù)器本身能夠支持 PHP 語(yǔ)言 不需要每一個(gè)請(qǐng)求就啟動(dòng) PHP 解釋器來解釋 PHP 和把 webserver 與 php 綁定起來的方式不同 fastcgi 是 HTTP 服務(wù)器與你 的或其它機(jī)器上的程序進(jìn)行 交談 的一種工具 相當(dāng)于一個(gè)程序接口 它可 以接受來自 web 服務(wù)器的請(qǐng)求 解釋輸入信息 將處理后的結(jié)果返回給服務(wù)器 apache lighty 等 mod fastcgi 就是在 apache 下支持 fastcgi 協(xié)議的模塊 工作原理工作原理 在介紹這兩種模式的工作原理前 我們先了解一下 php 的架構(gòu) 圖 1 php 架構(gòu)圖 上面是 php 的架構(gòu)圖 從圖上可以看到 SAPI 提供了一個(gè)和外部通信的接 口 使得 PHP 可以和其他應(yīng)用進(jìn)行交互數(shù)據(jù) php 默認(rèn)提供了很多種 SAPI 常 見的給 apache 的 mod php5 CGI 給 IIS 的 ISAPI 還有 Shell 的 CLI 對(duì)于 一個(gè)基于 apache 的 php 應(yīng)用 其運(yùn)行流程可以簡(jiǎn)單歸結(jié)如下 apacheapache httpdhttpd mod phpfastcgimod phpfastcgi sapisapi phpphp 我們下面提到的兩種工作方式就分別用到了 mod php5 和 cgi 的 sapi mod php mod php 是在 lamp 體系中最常使用的工作方式 在這種模式下 php 被編 譯為 apache 的一個(gè)內(nèi)置模塊 在啟動(dòng)時(shí)加載 當(dāng)有一個(gè) php 請(qǐng)求過來時(shí) 直接 在 httpd 進(jìn)程里完成 php 的解釋運(yùn)行 將結(jié)果返回 在 php 的 sapi 中 有這樣一個(gè)函數(shù) sapi cgibin ub write 這個(gè)函數(shù)告 訴了 Zend 如何輸出數(shù)據(jù) 查看 mod php 的 sapi 源碼 我們會(huì)發(fā)現(xiàn) 這個(gè)函 數(shù)直接調(diào)用了 apache 的 ap rwrite 函數(shù) 所以 用 mod php 我們可以把 php 和 apache 看做一個(gè)模塊 兩者綁定在一起 其工作原理如下圖所示 圖 2 mod php 工作原理 mod fastcgi 在說明 fastcgi 之前 先了解一下普通 cgi 的工作流程 web server 收到用戶請(qǐng)求 并把請(qǐng)求提交給 cgi 程序 cgi 程序根據(jù)請(qǐng)求 提交的參數(shù)作應(yīng)處理 然后輸出標(biāo)準(zhǔn)的 html 語(yǔ)句返回給 web server web server 再返回給客戶端 這就是普通 cgi 的工作原理 fastcgi 是基于 cgi 架構(gòu)的擴(kuò)展 他的核心思想就是在 web server 和具體 cgi 程序之間建立一個(gè)智能的可持續(xù)的中間層 統(tǒng)管 cgi 程序的運(yùn)行 這樣 web server 只需要將請(qǐng)求提交給這個(gè)層 這個(gè)層再派生出幾個(gè)可復(fù)用的 cgi 程序?qū)?例 然后再把請(qǐng)求分發(fā)給這些實(shí)例 這些實(shí)例是可控的 可持續(xù) 可復(fù)用的 因此一方面避免了進(jìn)程反復(fù) fork 另一方面又可以通過中間層的控制和探測(cè)機(jī) 制來監(jiān)視這些實(shí)例的運(yùn)行情況 根據(jù)不同的狀況 fork 或者回收實(shí)例 達(dá)到靈活 性和穩(wěn)定性兼得的目的 modFastCGI 的主要優(yōu)點(diǎn)是把動(dòng)態(tài)語(yǔ)言和 web server 分離開來 這種技術(shù)允許把 web server 和動(dòng)態(tài)語(yǔ)言運(yùn)行在不同的主機(jī)上 以大 規(guī)模擴(kuò)展和改進(jìn)安全性而不損失生產(chǎn)效率 基于 mod fastcgi 方式的 php 應(yīng)用 其典型工作流程如下 圖 3 mod fastcgi 工作原理 從圖上可以看出 apache 啟動(dòng)后 mod fastcgi 會(huì)在啟動(dòng)多個(gè) cgi 程序 也就是 php cgi 腳本 具體腳本的數(shù)目通過配置來指定 當(dāng)有 http 請(qǐng)求到來后 httpd 進(jìn)程會(huì)選擇一個(gè)當(dāng)前空閑的一個(gè) php cgi 程序來執(zhí)行 執(zhí)行的方式和 mod php 類似 也是通過 php cgi 提供的 sapi 完成交互 查看源碼 可以發(fā)現(xiàn) 對(duì)于 cgi 的 sapi 和 mod php 不同 它是把結(jié)果輸出到 fastcgi 提供的 stdout 上 fastcgi 再將數(shù)據(jù)返回給 httpd 完成交互 mod factcgi 的三種配置方式的三種配置方式 基于 mod fastcgi 的 fastcgi 應(yīng)用一共有三種配置方式 靜態(tài) 動(dòng)態(tài)和遠(yuǎn) 程 他們通過 apache 配置中的偽指令來代替 對(duì)應(yīng)于三種方式的偽指令分別是 FastCgiServer FastCgiConfig 以及 FastCgiExternalServer 對(duì)于靜態(tài)和動(dòng)態(tài)這兩種方式 apache 將通過 mod fastcgi 自帶的進(jìn)程管理 工具 fcgi pm 來管理 fastcgi 應(yīng)用程序 也就是 php cgi fcgi pm 在 apache 啟動(dòng)時(shí)就被自動(dòng)激活了 相對(duì)于前兩種 遠(yuǎn)程模式下 php cgi 不由 fcgi pm 來管理 apache 不會(huì)去關(guān)心 php cgi 程序的狀態(tài) 下面詳細(xì)說一下三種配置方式 靜態(tài)配置靜態(tài)配置 通過 FastCGIServer 偽指令將文件名定義為靜態(tài) FastCGI 應(yīng)用程序 初始 時(shí)需要指定啟動(dòng)的 php cgi 進(jìn)程數(shù)目 默認(rèn)為 1 個(gè) apache 運(yùn)行過程中 如果 靜態(tài)應(yīng)用程序?qū)嵗驗(yàn)槿魏卧蛩懒?那么 fcgi pm 將衍生另一個(gè)實(shí)例來替換 語(yǔ)法 FastCgiServer file name options 重要參數(shù)說明 idle timeoutidle timeout n n 30 秒 在請(qǐng)求異常終止和事件記錄在 error LogLevel 前 所允許的 FastCGI 應(yīng)用程序不活動(dòng)秒數(shù) 僅當(dāng)存在與 FastCGI 應(yīng)用程序 的暫掛連接時(shí) 該不活動(dòng)計(jì)時(shí)器才應(yīng)用 如果應(yīng)用程序在此期間不響應(yīng)隊(duì)列的 請(qǐng)求 那么請(qǐng)求異常終止 如果與應(yīng)用程序的通信完成 但是與客戶機(jī)的通信 未完成 緩存的響應(yīng) 那么超時(shí)不應(yīng)用 processesprocesses n n 1 在服務(wù)器初始化時(shí)衍生的應(yīng)用程序?qū)嵗龜?shù) portport n n 無 應(yīng)用程序用于與 Web 服務(wù)器通信的 TCP 端口號(hào) 1 65535 此選項(xiàng)使應(yīng)用程序可以從網(wǎng)絡(luò)中的其他機(jī)器訪問 socket 選項(xiàng)和 port 選項(xiàng) 是互斥的 socketsocket filename unix sock 文件名 Restart delayRestart delay n 5 秒 此應(yīng)用程序的失敗實(shí)例重新衍生之間的最小秒 數(shù) 此延遲阻止中斷的應(yīng)用程序使用過多系統(tǒng)資源 動(dòng)態(tài)配置動(dòng)態(tài)配置 在靜態(tài)配置中 我們初始就指定了要啟動(dòng)的 php 進(jìn)程數(shù) 和靜態(tài)的相反 動(dòng)態(tài)應(yīng)用程序根據(jù)需求啟動(dòng) php 應(yīng)用實(shí)例的數(shù)目根據(jù)當(dāng)前 http 請(qǐng)求數(shù)目動(dòng)態(tài) 變化 進(jìn)程的管理也是通過 fcgi pm 來完成 語(yǔ)法 FastCgiConfig option option 重要參數(shù)說明 和靜態(tài)方式相比 動(dòng)態(tài)配置的參數(shù)主要增加了以下幾個(gè) maxProcessesmaxProcesses n n 在任何時(shí)候允許運(yùn)行的最大動(dòng)態(tài) FastCGI 應(yīng)用程序?qū)嵗?數(shù) minProcessesminProcesses n n 任何時(shí)候允許運(yùn)行 且無須由 fcgi pm 因沒有需求 殺 死的最小動(dòng)態(tài) FastCGI 應(yīng)用程序?qū)嵗龜?shù) 在 dyn 模式下 因?yàn)?fastcgi 實(shí)例數(shù)目是動(dòng)態(tài)改變的 所以沒有靜態(tài)方式 中 process 這個(gè)參數(shù) 遠(yuǎn)程方式遠(yuǎn)程方式 這種模式下 fastcgi 實(shí)例和 apache 分離開來 這兩者可以分開來部署 他們之間的通信通過 tcp 或者 unix sock 來完成 使用 ext 方式 fastcgi 實(shí) 例將不會(huì)由 fcgi pm 來管理 而是獨(dú)立的運(yùn)行 語(yǔ)法 FastCgiExternalServer 文件名 host 主機(jī)名端口 appConnTimeout n FastCgiExternalServer 文件名 socket 文件名 appConnTimeout n 重要參數(shù)說明 idle timeoutidle timeout n n 30 秒 在請(qǐng)求異常終止 并且事件記錄之前 允許 FastCGI 應(yīng)用程序保持不活動(dòng)的秒數(shù) 只有當(dāng)與 FastCGI 應(yīng)用程序的連接暫掛 時(shí) 此不活動(dòng)定時(shí)器才適用 如果請(qǐng)求進(jìn)入應(yīng)用程序的請(qǐng)求隊(duì)列 而此應(yīng)用程 序在此期間沒有響應(yīng) 通過寫和刷新 則此請(qǐng)求將異常終止 如果與應(yīng)用程序 的通信已完成 而與客戶機(jī)的通信尚未完成 響應(yīng)被高速緩存 則此超時(shí)不適 用 hosthost host porthost port 應(yīng)用程序用于與 Web 服務(wù)器通信的主機(jī)名或 IP 地址和 TCP 端口號(hào) 1 65535 socket 和 host 選項(xiàng)是互斥的 socketsocket 文件名 無 應(yīng)用程序用于與 Web 服務(wù)器通信的 UNIX 域套接字的文件名 此文件名相 對(duì)于 FastCgiIpcDir socket 和 port 選項(xiàng)是互斥的 php fpm 使用 FastCGI 最主要優(yōu)點(diǎn)是把應(yīng)用和 web server apache 分離開來 這 樣允許把 web server 和動(dòng)態(tài)語(yǔ)言 php 運(yùn)行在不同的主機(jī)上 以大規(guī)模擴(kuò)展和 改進(jìn)安全性而不損失效率 這樣的情況下 對(duì)于 php cgi 程序 由于從 apache 中分離出來 就需要一 個(gè)單獨(dú)的工具來對(duì)這些進(jìn)程進(jìn)行管理 在 stc 和 dyn 兩種模式下 mod fastcgi 中自帶的 fcgi pm 會(huì)充當(dāng)了這樣的角色 可是 ext 模式下卻沒有 我們只能 通過一個(gè)腳本靜態(tài)的啟動(dòng) n 個(gè)實(shí)例 一旦進(jìn)程死掉 還需要手工重啟 當(dāng)然 你可以使用 supervise 來管理這些進(jìn)程 但是畢竟不那么靈活而且也僅僅一部 份問題 甚至于 fcgi pm 因?yàn)閷?shí)現(xiàn)的原因 其本身也有很多問題 例如不太 穩(wěn)定 壓力下出 core 無法平滑的完成切換等 基于上述的原因 我們需要一個(gè)穩(wěn)定可靠的進(jìn)程管理工具 就像 lighty 下的 spwn cgi 幸運(yùn)的是 出現(xiàn)了 php fpm 它是一個(gè)類似于 spwn cgi 的管理 工具 可以和任何支持遠(yuǎn)端 FastCGI 的 web server 工作 在官方的手冊(cè)上 列 舉了以下 php fpm 所具有的特性 特性Php 自帶的Spwn cgiPhp fpm php 守護(hù)程序 pid file log file setsid setuid setgid chroot 進(jìn)程控制 可以平滑 地重啟 重新載入配 置和二進(jìn)制模塊而不 丟失請(qǐng)求 Php4 Php5 只能平滑停止 限制 ip 地址 可以滿 足 web server 的要求 php4 php5 2 2 如果使用優(yōu)化器 在 遇到 opcode 緩存隨機(jī) 損壞的時(shí)候緊急重啟 所有進(jìn)程 使用用不同的 uid gid chroot 環(huán)境變 量 不同的 php ini 選項(xiàng) 不需要 safe mode 記錄 work process 的 stdout 和 stderr 如果 set time limit 沒 有起作用 強(qiáng)制結(jié)束 過期進(jìn)程 特色功能 Error header 優(yōu)化的上傳支持 fastcgi finish request 另外 php fpm 還可以兼容 zend Optimize 各種緩存優(yōu)化器 Php fpm 的安裝的安裝 Php fpm 是以 patch 的方式安裝的 如果要使用它 你必須在安裝 php 前打上 這個(gè)補(bǔ)丁 eg gzip cd php 5 2 6 fpm 0 5 9 diff gz patch d php 5 2 6 p1 在 configure 時(shí)加上 enable fpm 選項(xiàng) 安裝完 php 后 會(huì)有以下幾個(gè)文件 prefix ext php fpm conf prefix log php fpm log prefix log php fpm pid 其中 php fpm conf 是配置文件 具體如何配置文件里有非常詳盡的注釋 最后 執(zhí)行 bin php cgi fpm 就可以了 另外 你也可以使用 prexif sbin php fpm 腳本來方便的維護(hù) 性能測(cè)試性能測(cè)試 名稱解釋名稱解釋 ab apache 自測(cè)的性能測(cè)試工具 主要用于測(cè)試極限壓力 對(duì)于同一 url 每秒所能 執(zhí)行的次數(shù)及響應(yīng)時(shí)間 myab baidu 開發(fā)的壓力測(cè)試工具 區(qū)別于 ab 其更主要的功能是測(cè)試指定壓力條件 下機(jī)器的負(fù)載情況 eacc 一種 php 加速器 主要是將 php 程序編譯后的結(jié)果緩存起來 加速 php 的執(zhí)行 對(duì)性能有很大幅度的提升 更詳細(xì)的情況可以參見另一篇關(guān)于 php 緩存優(yōu)化的 文檔 緩存優(yōu)化工具 php 加速的利器 etc stc dyn mod fastcgi 運(yùn)行的模式 分別指遠(yuǎn)程 靜態(tài)和動(dòng)態(tài)模式 測(cè)試內(nèi)容測(cè)試內(nèi)容 測(cè)試中我們將針對(duì)不同的運(yùn)行模式和頁(yè)面類型進(jìn)行極限壓力測(cè)試及機(jī)器負(fù)載測(cè) 試 同時(shí) 我們還將測(cè)試使用緩存優(yōu)化和不使用緩存優(yōu)化下機(jī)器的表現(xiàn)情況 另外 由于我們的測(cè)試主要是對(duì)比兩種模式的性能差別 因此對(duì)于機(jī)器的硬件 配置不是特別敏感 測(cè)試的時(shí)候只需要保證機(jī)器負(fù)載為 0 即可 測(cè)試結(jié)果測(cè)試結(jié)果 最簡(jiǎn)單的 php 頁(yè)面 壓力工具 mysql 壓力情況 每秒 1000 次請(qǐng)求 并發(fā)數(shù) 70 性能指標(biāo) cpu idle 不同模式下機(jī)器 idle 情況如下圖 圖 4 最簡(jiǎn)單 php 頁(yè)面 1000 s 請(qǐng)求 idle 情況 從圖上我們可以看出 測(cè)試最簡(jiǎn)單的 php 頁(yè)面時(shí) 各種模式下性能幾乎沒 有差別 且由于頁(yè)面非常簡(jiǎn)單 eacc 的效果也基本沒有 復(fù)雜的 php 程序 2000 行代碼 壓力工具 mysql 壓力情況 每秒 400 次請(qǐng)求 并發(fā)數(shù) 70 性能指標(biāo) cpu idle 測(cè)試結(jié)果如下圖 圖 5 復(fù)雜的 php 代碼 400 s 壓力 idle 情況 從圖上可以看出 在 php 代碼復(fù)雜的情況下 前面 4 中模式性能差別不大 mod php 略優(yōu) 然后 fastcgi 動(dòng)態(tài)配置的方式在此情況下性能差距非常之大 idle 直接降為 0 同時(shí)雖然每秒是 400 次的壓力 其只能處理 200 次左右的請(qǐng)求 由于 php 代碼很復(fù)雜 eacc 的作用明顯體現(xiàn)出來 使用緩存優(yōu)化后性能提升一 倍以上 另外 還可以看出 eacc 這樣的緩存優(yōu)化工具對(duì)于 mod php 和 fastcgi 方式 起到的作用基本相同 他們之間的性能差異和使用前維持相同 在上述情況下 如果不適應(yīng) fpm fastcgi 模式會(huì)出 core 主要原因還在在于 進(jìn)程管理的問題 實(shí)際項(xiàng)目中的 php 程序 這里我們采用群組項(xiàng)目中的 pb 頁(yè)面 涉及到和數(shù)據(jù)庫(kù)交互 db 交互 2 次 db 部署在其他機(jī)器 每次請(qǐng)求耗時(shí) 50ms 左右 壓力工具 mysql 壓力情況 每秒 400 次請(qǐng)求 并發(fā)數(shù) 70 性能指標(biāo) cpu idle 測(cè)試結(jié)果如下 圖 6 實(shí)際的 php 頁(yè)面 400 s 壓力 idle 情況 從圖上可以看出 性能的情況和圖 2 類似 各種模式的差距仍然不大 極限壓力測(cè)試 壓力工具 ab 測(cè)試參數(shù) 并發(fā)請(qǐng)求數(shù) 100 總次數(shù) 10000 次 測(cè)試頁(yè)面 pb 頁(yè)面 性能指標(biāo) 每秒請(qǐng)求數(shù) rps 圖 7 極限壓力測(cè)試 pb 頁(yè)面 從上圖我們可以看到 極限壓力下 使用 eacc 后 mod php 和 ext fpm 基 本差不多 保持在 860 s 左右的水平 而使用 fpm 方式進(jìn)行管理的模式略優(yōu)于 其他兩種 fastcgi 模式 測(cè)試中發(fā)現(xiàn) fastcgi 模式下 不使用 php fpm 管理的話 仍然會(huì)有 core 出 現(xiàn) fastcgi 配置項(xiàng)對(duì)性能的影響 配置項(xiàng)對(duì)性能的影響 在 mod fastcgi 下 不管是 ext 還是 stc 方式 有一個(gè)配置項(xiàng)是非常關(guān)鍵的 默認(rèn)啟動(dòng) 的 php cgi 進(jìn)程實(shí)例數(shù) 從 fastcgi 原理可以看出 當(dāng)有一個(gè) httpd 進(jìn)程到來時(shí) 它需要調(diào)用 fastcgi server 來執(zhí) 行 如果此時(shí)所有 server 都出于服務(wù)狀態(tài) 則這個(gè) httpd 進(jìn)程將出于等待狀態(tài)得不到服務(wù) 導(dǎo)致請(qǐng)求無法響應(yīng) 對(duì) pb 頁(yè)面進(jìn)行測(cè)試 配置不同的實(shí)例數(shù)目進(jìn)行極限壓力測(cè)試 得到結(jié)果如下 圖 8 fastcgi 實(shí)例數(shù)對(duì)性能的影響 分析一下這個(gè)原因 我們的 pb 頁(yè)面執(zhí)行時(shí)間是 50ms 也就是說一個(gè) php cgi 程序在 1s 內(nèi)可以 處理的請(qǐng)求數(shù)目是 1000 50 20 假設(shè)啟動(dòng)的實(shí)例數(shù)目是 n 則 1s 內(nèi)最多能完 成的請(qǐng)求數(shù)為 n 20 從圖上可以看出 實(shí)際結(jié)果符合我們的計(jì)算 另外 這個(gè) 數(shù)值也不是無限增大了 當(dāng) n 20 大于 server 本身所能承受的極限時(shí) rps 也 不會(huì)繼續(xù)往上增長(zhǎng)了 所以 使用 fastcgi 對(duì)于 n 的選擇 要綜合頁(yè)面平均處理時(shí)間 最大壓力 等多種因素結(jié)合來配置 同時(shí) 在 ext 方式下 webserver 和 fastcgi server 交互的方式有兩種 通過 tcp 或者 unix sock 測(cè)試一下這兩種方式的情況 使用 myab 每秒 400 次請(qǐng)求 pb 頁(yè)面 機(jī)器 idle 圖 9 ext 下 unix sock 和 tcp 的區(qū)別 從圖上可以看出 不管是否使用 eacc tcp 方式的 idle 都有一個(gè)百分點(diǎn)的 下降 這個(gè)差異主要是因?yàn)槎嗔?tcp 連接過程造成的 分析分析 結(jié)論結(jié)論 根據(jù)各種測(cè)試結(jié)果 可以看出和 fastcgi 方式相比 mod php 的性能在各種 情況下都稍優(yōu) 這種差異主要是在于后一種方式增加了一次數(shù)據(jù)交互過程 php fascgi apache 但是這個(gè)差距并不大 在使用了 eacc 等緩存優(yōu)化工具后 性 能有了很大提升 他們之間的差距完全不是瓶頸 從使用的角度來說 fastcgi 具有以下優(yōu)點(diǎn) 1 webserver 和 php 程序分離 兩者可以部署在不同的地方 通過 socket 方式 通信帶來一定安全性 2 使用 fastcgi 在出現(xiàn)問題時(shí)可以更好的定位是 webserver 還是 php 的原因 3 fastcgi 方式不依賴于 webserver 更加靈活 擴(kuò)展性也更好 4 fastcgi 本身會(huì)有一些進(jìn)程監(jiān)控和日志記錄 更便于分析問題 跟蹤狀態(tài) 5 靈活多樣的配置 可以根據(jù)實(shí)際的應(yīng)用進(jìn)行合理配置達(dá)到最佳效果 當(dāng)然 fastcgi 也有一些缺點(diǎn) 1 mod fastcgi 在進(jìn)程管理上有一些問題 容易出 core 這個(gè)問題通過使用 php fpm 可以解決 2 由于 fastcgi 應(yīng)用單獨(dú)分離出來 因此需要單獨(dú)監(jiān)控進(jìn)程的狀態(tài) 防止進(jìn)程 掛掉后導(dǎo)致服務(wù)出現(xiàn)問題 這個(gè)可以通過使用用 supervise 管理一定程度上 避免這個(gè)問題 3 文檔相對(duì)缺乏 mod fastcgi 對(duì) apache 的支持也不是特別好 且基本沒有升 級(jí) 關(guān)于 fastcgi 運(yùn)行方式的選擇 從效率 穩(wěn)定性等各方面來說 ext 方式是最 佳選擇了 而且考慮到我們可能會(huì)將 webserver 和 php 分開到不同機(jī)器 選擇 遠(yuǎn)程方式也是必須的 進(jìn)程管理工具 從各方面來說 php fpm 是最優(yōu)選擇了 即時(shí)使用 lighty 作 用 web server 也完全可以用它代替 spwn cgi 綜合測(cè)試結(jié)果和上述分析 我們完全可以采用 fastcgi 代替?zhèn)鹘y(tǒng)的 mod php 推 薦使用下面的組合方式 apache ext php fpm with superwise 如果 webserver 和 fastcgi 部署在同一機(jī)器上 使用 unix sock 方式通信 否則使 用 tcp 方式 附錄附錄 apache mod fastcgi php 搭建搭建 php mod fastcgi 的搭建主要有三種方式 stc ext 和 dyn 不管是哪種方式 首先在安裝 php 的時(shí)候需要加上如下選項(xiàng) enable fastcgi 并且不能使用 with apxs 以下是一個(gè)配置 php 例子 configure prefix home club hongdk env php5 26 fcgi enable trace vars with zlib dir home club hongdk tool zlib with mysql home club hongdk env mysql5 with mysqli home club hongdk env mysql5 bin mysql config with gettext with iconv enable mbstring gbk with xmlrpc enable safe mode enable sockets enable url fopen wrapper enable ftp enable shmop with config file path home club hongdk env php5 26 fcgi enable xml with dom home club hongdk tool libxml with libxml dir home club hongdk tool libxml with curl home club hongdk tool curl with curlwrappers enable fastcgi 在安裝完后 會(huì)在 php 的 bin 目錄下找到如下文件 php cgi 執(zhí)行 php cgi v 如果看到 PHP 5 2 5 cgi fcgi built Nov 12 2008 20 44 08 Copyright c 1997 2007 The PHP Group Zend Engine v2 2 0 Copyright c 1998 2007 Zend Technologies 就表明安裝成功了 mod fastcgi cd mod fastcgi 2 4 6 cp Makefile AP2 Makefile vi Makefile 修改 top dir 為 apache 安裝目錄 make make install apache 配置 修改 httpd conf 首先增加 LoadModule fastcgi module modules mod fastcgi so 然后根據(jù)不同的運(yùn)行模式進(jìn)行配置 eg ext 模式 FastCgiExternalServer php server socket home club fastcgi sock ScriptAlias cgi bin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論