啟動php PHP FPM程序模型

2021-10-14 22:23:02 字數 1285 閱讀 5575

先說一下php-fpm的程序模型,php-fpm採用的是master/worker程序模型。當php-fpm啟動時,會讀取配置檔案,然後建立乙個master程序和若干個worker程序(具體是幾個worker程序是由php-fpm.conf中配置的個數決定)。worker程序是由master程序fork出來的。

master程序和worker程序的作用:

php-fpm程序管理方式有動態(dynamic)、靜態(static)、按需(ondemand)三種,下面將一一介紹。

動態(dynamic)在這種方式下,php-fpm啟動時會建立一定數量的worker程序。當請求數逐漸增大時,會動態增加worker程序的數量;當請求數降下來時,會銷毀剛才動態建立出來的worker程序。在這種方式下,如果配置的最大程序數過大,當請求量增加時會出現大量worker程序,程序之間會頻繁切換,浪費大量cpu資源。

下面的三個引數可以配置worker程序的數量:

靜態(static)這種方式下,php-fpm啟動時會建立配置檔案中指定數量的worker程序,不會根據請求數量的多少而增加減少。因為php-fpm開啟的每個worker程序同一時間只能處理乙個請求,所以在這種方式下當請求增大的時候,將會出現等待的情形。

下面的引數可以配置worker程序的數量:pm.max_children:靜態方式下開啟的php-fpm程序數量。

按需(ondemand)在這種方式下,php-fpm啟動時,不會建立worker程序,當請求到達的時候master程序才會fork出子程序。在這種模式下,如果請求量比較大,master程序會非常繁忙,會占用大量cpu時間。所以這種模式不適合大流量的環境。

在nginx+php-fpm的架構中,web伺服器是如何與php-fpm通訊的呢?

當使用者請求乙個http位址時,nginx會收到請求,然後將請求**給php-fpm,php-fpm收到請求後會將請求**給乙個空閒的worker程序。當worker程序處理完後會將結果返回給nginx,ngixn再講內容返回給使用者。

啟動程序流程

linux啟動程序時設定了cs,esp等各個暫存器的值,這是相應的巨集 void start thread struct pt regs regs,unsigned long new ip,unsigned long new sp export symbol gpl start thread 這是 ...

啟動 Oracle程序

使用putty工具登入omu伺服器,putty工具的使用方法請參見putty工具操作。執行su oracle命令,輸入 oracle 使用者的密碼,將當前使用者切換為 oracle 使用者。執行命令sqlplus as sysdba,以系統使用者登入資料庫。螢幕輸出如下 sql plus relea...

C 程序啟動

using system using system.collections.generic using system.diagnostics using system.linq using system.text using system.threading.tasks namespace 01程序...