nginx php執行請求的工作原理

2021-09-11 21:27:13 字數 1103 閱讀 4120

首先先了解下常聽說的cgi,php-cgi,fastcgi,php-fpm到底是什麼關係,幫助了解php的工作原理

cgi協議用來確定webserver(例如nginx),也就是內容分發伺服器傳遞過來什麼資料,什麼樣格式的資料

php-cgi是php的cgi協議程序直譯器,每次啟動時,需要經歷載入php.ini檔案->初始化執行環境->處理請求->返回內容給webserver->php-cgi程序退出的流程

php-fpm是對fastcgi協議的實現,是程序管理器,啟動時包括master和worker程序倆部分,master程序監聽埠,接收來自webserver請求,worker程序一般具有多個,每個worker程序都有乙個cgi程序直譯器,用來執行php**

啟動phpfpm時,會啟動master程序,載入php.ini檔案,初始化執行環境,並啟動多個worker程序。每次請求來時會將請求傳遞給worker程序進行處理

每次修改完php.ini配置並重啟後,會啟動新的worker程序載入新的配置,而之前已經存在的程序會在工作完成之後銷毀,因此實現平滑重啟

如果想弄明白nginx和php配合的原理,還需要先了解nginx的配置檔案中的server部分

server 

#當請求**的php檔案的時候,反向**到php-fpm去處理

location ~ \.php$

}複製**

上面server配置的整體含義是:每次nginx監聽到80埠的url請求,會對url進行location匹配。如果匹配到/規則時,會進行內部請求重定向,發起/index.php?$query_string的內部請求,而對應的location配置規則會將請求傳送給監聽9000埠的php-fpm的master程序

下面總結下最簡單的使用者請求流程:

使用者訪問網域名稱->網域名稱進行dns解析->請求到對應ip伺服器和埠->nginx監聽到對應埠的請求->nginx對url進行location匹配->執行匹配location下的規則->nginx**請求給php->php-fpm的master程序監聽到nginx請求->master程序將請求分配給其中乙個閒置的worker程序->worker程序執行請求->worker程序返回執行結果給nginx->nginx返回結果給使用者

nginx php執行請求的工作原理

首先先了解下常聽說的cgi,php cgi,fastcgi,php fpm到底是什麼關係,幫助了解php的工作原理 cgi協議用來確定webserver 例如nginx 也就是內容分發伺服器傳遞過來什麼資料,什麼樣格式的資料 php cgi是php的cgi協議程序直譯器,每次啟動時,需要經歷載入ph...

nginx php執行請求的工作原理

首先先了解下常聽說的cgi,php cgi,fastcgi,php fpm到底是什麼關係,幫助了解php的工作原理 cgi協議用來確定webserver 例如nginx 也就是內容分發伺服器傳遞過來什麼資料,什麼樣格式的資料 php cgi是php的cgi協議程序直譯器,每次啟動時,需要經歷載入ph...

nginx php執行請求的工作原理

首先先了解下常聽說的cgi,php cgi,fastcgi,php fpm到底是什麼關係,幫助了解php的工作原理 cgi協議用來確定webserver 例如nginx 也就是內容分發伺服器傳遞過來什麼資料,什麼樣格式的資料 php cgi是php的cgi協議程序直譯器,每次啟動時,需要經歷載入ph...