PHP的整个生命周期被划分为以下几个阶段:模块初始化阶段、请求初始化阶段、执行脚本阶段、请求关闭阶段、模块关闭阶段。php的cli模式下每次执行一个脚本都会完整的经历这些阶段,而FastCgi模式下则只会在启动时执行一次模块初始化阶段,然后接下来的各个请求只会执行请求初始化阶段、脚本执行阶段,请求关闭阶段。
- MINIT(module init 模块初始化)
- 启动 PHP 输出、初始化垃圾回收器
- 启动 Zend 引擎、注册 Zend 核心扩展、Zend 标准常量
- 解析 PHP.ini,映射 PHP.ini 相关配置
- 注册静态、动态编译的扩展
- 回调各扩展定义的 module starup 钩子函数
用一句话来说,就是初始化类、常量、扩展等 PHP 所用到的资源
- RINIT(request init 请求初始化)
PHP 初始化脚本执行的基本环境,SAPI 将控制权交给 PHP,激活 Zend 引擎,初始化执行器
- PHP 脚本执行
Zend 引擎接管控制权,将 PHP 脚本编译成 Opcodes,并顺序执行
- RSHUTDOWN (request shutdown 请求结束)
PHP 脚本执行完之后进入请求结束阶段,PHP 启动清理程序,这个阶段,将 flush 输出内容,发送 http 响应内容,关闭 PHP 执行器
- MSHUTDOWN(module shutdown 模块关闭)
这个阶段主要是进行资源的清理、php 各模块的关闭操作,同时,将回调各扩展的 module shutdown 钩子函数,这是发生在所有请求都已经结束之后,例如关闭fpm的操作。
来源:oschina
链接:https://my.oschina.net/u/4382386/blog/3220540