nginx php fpm 執行原理

2021-10-23 11:35:30 字數 1738 閱讀 5130

目錄

cgicgi工作原理

fastcgi

php-fpm(php內建的一種fast-cgi)

請求步驟

common gateway inte***ce (公共閘道器介面)

請求模式:

web brower(瀏覽器) ----(通過http協議傳輸)----> http server(伺服器nginx/apache) -----> cgi program -----> db

server 與 cgi 通過 stdin/stdout(標準的輸入/輸出)進行資料傳遞

nginx(動態載入模組) apache(指定載入模組)

每當客戶請求cgi的時候,web伺服器就請求作業系統生成乙個新的cgi直譯器程序(如php-cgi.exe),

cgi 的乙個程序則處理完乙個請求後退出,下乙個請求來時再建立新程序。

當然,這樣在訪問量很少沒有併發的情況也行。可是當訪問量增大,併發存在,這種方式就不 適合了。於是就有了fastcgi。

像是乙個常駐(long-live)型的cgi,它可以一直執行著,只要啟用後,

不會每次都要花費時間去fork一次(這是cgi最為人詬病的fork-and-execute 模式)。

一般情況下,fastcgi的整個工作流程是這樣的:

1.web server啟動時載入fastcgi程序管理器(iis isapi或apache module)

2.fastcgi程序管理器自身初始化,啟動多個cgi直譯器程序(可見多個php-cgi)並等待來自web server的連線。

3.當客戶端請求到達web server時,fastcgi程序管理器選擇並連線到乙個cgi直譯器。 web server將cgi環境變數和標準輸入傳送到fastcgi子程序php-cgi。

4.fastcgi 子程序完成處理後將標準輸出和錯誤資訊從同一連線返回web server。

當fastcgi子程序關閉連線時, 請求便告處理完成。

fastcgi子程序接著等待並處理來自fastcgi程序管理器(執行在web server中)的下乙個連線。 

在cgi模式中,php-cgi在此便退出了。

php-fpm即php-fastcgi process manager.

php-fpm是 fastcgi 的實現,並提供了程序管理的功能。

程序包含 master 程序和 worker 程序兩種程序。

master 程序只有乙個,負責監聽埠,接收來自 web server 的請求,而 worker 程序則一般有多個(具體數量根據實際需要配置),

每個程序內部都嵌入了乙個 php 直譯器,是 php **真正執行的地方。

web brower(瀏覽器訪問) www.example.com||

通過http協議傳輸  ||

(伺服器nginx/apache)            ||

配置解析    

路由到 www.example.com/index.php||

載入 nginx 的 fast-cgi 模組||

fast-cgi 監聽 127.0.0.1:9000 位址

通過 fast-cgi 協議將請求**給 php-fpm 處理||

請求到達 127.0.0.1:9000||

php-fpm 監聽 127.0.0.1:9000

可通過 php-fpm.conf 進行修改

聊聊nginx php fpm的執行原理

通過反向 實現負載均衡 對於人是不感知的,但是對於伺服器來說是感知的,俗稱反向 伺服器。nginx是乙個高效能的http和反向 伺服器,也是乙個imap pop3 smtp伺服器 利用nginx的反向 功能,將動態請求轉向後端的php fpm。也就是配置乙個nginx站點 1,配置nginx.con...

nginx php fpm安裝手記

www 將www加入www組並禁止www登入shell 編譯前編輯src core nginx.h找到 define nginx version define nginx version define nginx ver define nginx var 將上邊資訊替換為你想替換的資訊,便於隱藏ng...

mysql執行原理 mysql 執行原理

闡述mysql系統的各個模組是如何相親相愛的完成乙個我們認為的很簡單的查詢工作的。我們對啟動mysql,客戶端建立連線,請求query,得到返回結果,最終退出。這樣一整個過程來進行分析。第一步 當我們執行啟動mysql系統的命令之後,mysql的初始化模組就從系統配置檔案中讀取系統引數和命令列引數,...