php核心**執行過程
啟用和執行php直譯器有幾個關鍵步驟:
當乙個應用程式想啟動乙個php直譯器,首先呼叫php_module_startup。
這個函式是直譯器的主開關。
它啟用註冊過的sapi,初始化輸出快取系統,啟動zend引擎,
讀入php.ini檔案,啟用配置,準備好處理第一次請求。
核心模組使用到的一些重要函式有:
* php_module_startup - php主入口函式.
* php_startup_extensions - 執行所有已註冊的擴充套件的初始化函式.
* php_output_startup - 啟動輸出系統.
* php_request_startup - 是請求開始階段的主函式,每次請求,sapi函式會向下呼叫該函式,然後該函式再向下呼叫zend引擎來進行初始化,以及呼叫所有已註冊模組的請求啟動函式.
* php_output_activate - 啟用輸出系統,來使用sapi相關的輸出函式.
* php_init_config - 讀取php.ini檔案並啟用配置
* php_request_shutdown - 主要負責銷毀每個請求所占用的資源.
* php_end_ob_buffers - 用來重新整理輸出快取,如果輸出快取被啟用了的話.
* php_module_shutdown - 這個是php的主關閉函式,觸發直譯器所有其餘的關閉(shutdown)函式.
上述中的sapi是php提供給web伺服器及其他應用的開放介面,可參考:
php架構圖:
php架構之路
鑑於最近跟小夥伴聊了很多php架構發展方向的問題,相關技術整理了一下,也順便規劃了一下自己的2019年。一.常用的設計模式以及使用場景 以下是我用到過的 工廠,單例,策略,註冊,適配,觀察者,原型,裝飾器,facade,loc,pipeline 三.常用利器優化 mysql效能優化 1 理解底層bt...
PHP深入理解 PHP架構布局
解析為token 將語法轉換為抽象語法樹 將語法樹轉換opcodes scanning parsing compilation excution 執行opcodes 從上圖中看出主要從解析phpcode到執行主要經過了四個階段.獲取token可以通過token get all 函式獲取token資訊...
PHP深入理解 PHP架構布局
解析為token 將語法轉換為抽象語法樹 將語法樹轉換opcodes scanning parsing compilation excution 執行opcodes 從上圖中看出主要從解析phpcode到執行主要經過了四個階段.獲取token可以通過token get all 函式獲取token資訊...