(一)我們知道像apache這些web伺服器是不能直接解析php程式,那麼我們在網頁在輸入的php程式是如何解析的啦?
是通過sapi: server abstraction api 它提供了乙個介面,使得php可以和其他應用進行互動資料。
php 提供多種sapi
1.給apache、nginx 這種web伺服器使用的 php_module .cgi
2.給shell 提供的cli
(cli 即php命令列模式)
(二)mod_php模式
把php模組安裝到apache中,每個請求都會產生乙個新的程序。
我們在apache的配置檔案httpd.conf中加上或者修改這樣幾句:
./configure –with-mysql=/usr/local –with-apache=/usr/local/apache –enable-track-vars
所以,這種方式,他們的共同本質都是用loadmodule來載入php5_module,就是把php作為apache的乙個子模組來執行。當通過web訪問php檔案時,apache就會呼叫php5_module來解析php**。
這就是mod_php模式
(三)mod_fastcgi 模式
cgi 是外部程式與web伺服器的介面標準,是在cgi程式和web伺服器之間傳遞資訊的規程。
cgi工作原理:web伺服器收到使用者請求,把請求提交給cgi程式,cgi程式根據請求提交引數做出處理,把結果返回給web伺服器
fastcgi:傳統的cgi每次web請求都有啟動和退出,而fastcgi是啟動多個cgi模組,一直執行,web請求過來了,可以直接處理,處理完也不會退出。
圖形表示一下 mod_php模式和mod_fastcgi 模式
mod_php模式
mod_fastcgi模式
(四)php-cgi php實現的自帶fastcgi的管理器
php-fpm php-cgi的管理程式,是對於php-cgi的改進
請求靜態頁面
php_fpm模式
php_cgi模式
取至:
FastCGI執行原理及php fpm引數配置
1 什麼是cgi cgi全稱是 公共閘道器介面 common gateway inte ce http伺服器與你的或其他機器上的程式進行 交談 的一種工具,cgi程式須執行在網路伺服器上。傳統cgi介面方式的主要缺點是效能很差,因為每次http伺服器遇到動態程式時都需要重新啟動指令碼解析器來執行解析...
CGI 和 FastCGI 協議的執行原理
在用php開發的過程中,我們常常使用nginx或者apache作為我們的web伺服器。但是php是如何與這些web伺服器通訊的呢?要談fastcgi就必須先說說cgi。那什麼是cgi?cgi協議同 http 協議一樣是乙個 應用層 協議,它的 功能 是為了解決 web 伺服器與 php 應用 或其他...
CGI 和 FastCGI 協議的執行原理
目錄深入fastcgi協議 web 伺服器和 fastcgi 互動過程 為什麼需要在訊息頭髮送 requestid 這個標識?php fpm 在用php開發的過程中,我們常常使用nginx或者apache作為我們的web伺服器。但是php是如何與這些web伺服器通訊的呢?要談fastcgi就必須先說...