PHP 生命週期

瞭然、發表於2020-02-11

模組初始化

// 程式碼路徑mian/mian.c
 php_module_startup
  • 啟用SAPI,主要是對SG巨集進行初始化,包括返回碼、返回頭、請求體、cookie等
  • 初始化垃圾回收,呼叫gc_globals_ctor_ex函式對gc進行初始化和重置
  • 初始化Zend引擎
    • 啟動記憶體管理器(start_memory_manager)
    • 設定編譯檔案(zend_complie_file)和執行檔案(zend_execute_file)函式控制程式碼
    • 初始化opcode執行控制程式碼(zend_init_opcodes_handlers)
    • 初始化(函式符號表)GLOBAL_FUNCTION_TABLE、(類符號表)GLOBAL_CLASS_TABLE、(超全域性符號表)GLOBAL_AUTO_GLOBALS_TABLE、(常量符號表)GLOBAL_CONSTANTS_TABLE
    • 初始化$GLOBALS超全域性變數函式控制程式碼
  • 解析配置檔案
  • 註冊超全域性變數($_POST、$_GET、$_COOKIE、$_SERVER、$_ENV、$_REQUEST、$_FILES)
  • 註冊靜態擴充套件
  • 註冊INI中配置的動態載入的擴充套件
  • 呼叫各PHP擴充套件中的PHP_MINIT()
  • 呼叫個ZEND擴充套件的startup函式

SG sapi
OG 輸出
PG 核心
AG 記憶體管理
CG 編譯
EG 執行
BG 基礎

本作品採用《CC 協議》,轉載必須註明作者和本文連結