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_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程序。
dynamic: 動態模式,啟動時分配固定的程序。伴隨著請求數增加,在設定的浮動範圍調整worker程序。
FastCGI執行原理及php fpm引數配置
1 什麼是cgi cgi全稱是 公共閘道器介面 common gateway inte ce http伺服器與你的或其他機器上的程式進行 交談 的一種工具,cgi程式須執行在網路伺服器上。傳統cgi介面方式的主要缺點是效能很差,因為每次http伺服器遇到動態程式時都需要重新啟動指令碼解析器來執行解析...
php fpm多例項執行
本文主要針對如何通過配置php fpm多例項,及nginx對多例項負載均衡之配置,不涉及安裝。從實踐來看,單例項最多可以開到200 300左右的程序,開到500以上就容易出錯了。每個程序占用的內存在5m 15m左右,按平均10m計算,500個程序也只有5g,而現在很多高效能機都是64g甚至128g的...
Filter 執行原理和執行順序
底層中存在乙個map和乙個陣列。乙個map map的key為的值,value為filter例項物件的引用。乙個陣列 存在著和請求相匹配的filter引用。執行過程 當對某資源的請求到web容器時,會先對請求解析,使用解析出來的uri作為乙個比較物件,從map中查詢是否存在相匹配的key。若存在,那麼...