启动SAPI → 模块初始化(MINIT)→ 请求循环 → 请求初始化(RINIT)→ 编译执行 → 请求关闭(RSHUTDOWN)→ 请求循环结束 → 模块关闭(MSHUTDOWN)
1. 模块初始化阶段(MINIT)
-
触发时机:PHP进程启动时(如php-fpm启动、CLI脚本启动)
-
核心动作:
// php-src/main/php.h PHP_MINIT_FUNCTION(my_extension) { REGISTER_INI_ENTRIES(); // 注册php.ini配置 zend_register_class(...); // 注册类/函数 return SUCCESS; }
-
关键行为:
-
加载所有扩展(扩展的MINIT方法被调用)
-
解析php.ini配置到全局哈希表
-
注册全局常量、类、函数到CG(function_table)
-
-
内存分配:常驻内存(直到进程结束)
2. 请求初始化阶段(RINIT)
-
触发时机:每个请求开始时(如HTTP请