php-fpm運行原理和模式的簡單介紹

2019-11-01     科技i關注

本篇文章給大家帶來的內容是關於php-fpm運行原理和模式的簡單介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

運行原理:

cgi初始化階段:分別調用fcgi_init()和 sapi_startup()函數,註冊進程信號以及初始化sapi_globals全局變量。

php環境初始化階段:由cgi_sapi_module.startup 觸發。實際調用php_cgi_startup函數,而php_cgi_startup內部又調用php_module_startup執行。 php_module_startup主要功能:a).加載和解析php配置;b).加載php模塊並記入函數符號表(function_table);c).加載zend擴展 ; d).設置禁用函數和類庫配置;e).註冊回收內存方法;

php-fpm初始化階段:執行fpm_init()函數。負責解析php-fpm.conf文件配置,獲取進程相關參數(允許進程打開的最大文件數等),初始化進程池及事件模型等操作。

php-fpm運行階段:執行fpm_run() 函數,運行後主進程發生阻塞。該階段分為兩部分:fork子進程 和 循環事件。fork子進程部分交由fpm_children_create_initial函數處理( 註:ondemand模式在fpm_pctl_on_socket_accept函數創建)。循環事件部分通過fpm_event_loop函數處理,其內部是一個死循環,負責事件的收集工作。

運行模式

php-fpm支持三種運行模式,分別為static、ondemand、dynamic,默認為dynamic 。

static: 靜態模式,啟動時分配固定的worker進程。

ondemand: 按需分配,當收到用戶請求時fork worker進程。 ondemand: 按需分配,當收到用戶請求時fork worker進程。

dynamic: 動態模式,啟動時分配固定的進程。伴隨著請求數增加,在設定的浮動範圍調整worker進程

以上就是php-fpm運行原理和模式的簡單介紹的詳細內容,更多請關注其它相關文章!

更多技巧請《轉發 + 關注》哦!

文章來源: https://twgreatdaily.com/zh-tw/vjEQJG4BMH2_cNUgbr30.html