mod_php和mod_fastcgi的對比

1. mod_php

對於apache端的php的配置,咱們最經常使用的就是mod_php,它把php做爲apache一個內置的模塊.讓apache http服務器自己可以支持php語言,不須要每個請求就啓動php解釋器來解釋php.php

工做原理:web

2. mod_fastcgi

fastcgi:http服務器與你的或其它機器上的程序進行「交談」的一種工具,至關於一個程序接口。它能夠接受來自web服務器的請求,解釋輸入信息,將處理後的結果返回給服務器等。mod_fastcgi就是在apache下支持fastcgi協議的模塊。apache

FastCGI像是一個常駐(long-live)型的CGI,它能夠一直執行着,只要激活後,不會每次都要花費時間去fork一次(這是CGI最 爲人詬病的fork-and-execute 模式)。它還支持分佈式的運算, 即 FastCGI 程序能夠在網站服務器之外的主機上執行而且接受來自其它網站服務器來的請求。a主機的CGI能夠接收B服務器上的請求。安全

fastcgi工做原理:

(1)web server 啓動時載入Fastcgi進程管理器。[PHP-FPM]
(2)Fastcgi進程管理器自身初始化,啓動多個CGI解釋器進程而且等待來自web server的鏈接。啓動php-cgi Fastcgi進程時,能夠配置TCP和unix套接字兩種方式。通常生產環境中採用TCP方式
(3)當客戶端請求到達web server時,web server 經過tcp協議或者unix套接字的方式將請求轉發給Fastcgi主進程,Fastcgi主進程選擇並鏈接一個cgi進程。
(4)Fastcgi子進程完成php程序流程處理後將標準輸出和錯誤信息一同返回給web server。當Fastcgi子進程關閉時,請求便告處理完成。Fastcgi子進程便接着等待來自Fastcgi進程管理器的下一個鏈接。
(5)fastcgi是基於cgi架構的擴展,他的核心思想就是在web server和具體cgi程序之間創建一個智能的可持續的中間層,統管cgi程序的運行,這樣web server只須要將請求提交給這個層,這個層再派生出幾個可複用的cgi程序實例,而後再把請求分發給這些實例,這些實例是可控的,可持續,可複用的。mod_fastcgi的主要優勢是把動態語言和web server分離開來。這種技術容許把web server 和 動態語言運行在不一樣的主機上,以大規模擴展和改進安全性而不損失生產效率。服務器

使用fastcgi,最主要的優勢是把應用和web server(apache)分離開來。這樣容許把web server 和動態語言(php)運行在不一樣的主機上,以大規模擴展和改進安全性而不損失效率。架構

這樣狀況下,對於php-cgi程序,因爲從apache中分離出來,就須要一個單獨的工具來對這些進程進行管理,幸運的就是php-fpm的出現。tcp

http://www.jb51.net/article/37756.htm分佈式

相關文章
相關標籤/搜索