PHP的整个生命周期分为以下几个阶段:模块初始化阶段(modulestartup)、请求初始化阶段(requeststartup)、执行脚本阶段(executescript)、请求关闭阶段(requestshutdown)、模块关闭阶段。根据不同SAPI的实现,每个阶段的执行会有一些差异。比如在命令行模式下,每次执行一个脚本,都会完整的经历这几个阶段,而在FastCgi模式下,在启动的时候会进行一次模块初始化,然后每次请求只会经历几个阶段请求初始化、请求脚本执行、请求关闭,在SAPI关闭时会经历模块关闭阶段。模块初始化阶段,激活SAPI,启动PHP输出,初始化垃圾收集器,启动Zend引擎,启动内存池,设置一些util函数句柄,设置Zend虚拟机编译和执行函数句柄,分配函数符号表,类符号表,和常量符号表,注册Zend核心扩展注册Zend定义的标准常量注册$GLOBALS超全局变量的获取处理程序赋值php.ini配置的存储符号表注册PHP定义的常量解析php.ini映射PHP、Zend核心php.ini配置注册获取$_GET、$_POST、$_COOKIE、$_SERVER、$_ENV、$_REQUEST、$_FILES变量处理程序注册静态编译扩展注册动态加载扩展回调模块各扩展定义的启动钩子函数php.ini中禁用的注册函数和类请求在初始化阶段,激活输出,激活Zend引擎,重置垃圾收集器,初始化编译器,初始化执行器,初始化词法扫描器,激活SAPI回调,请求各个扩展定义的启动钩子函数,执行脚本阶段,编译阶段,PHP源码,抽象syntaxtree,oplineinstruction,execute阶段,requestclose在flush阶段,发送输出内容,清理HTTP响应头。全局变量是封闭的。编译器关闭。
