PHP生命周期
程序员文章站
2022-05-04 11:18:07
PHP的整个生命周期被划分为以下几个阶段:模块初始化阶段、请求初始化阶段、执行脚本阶段、请求关闭阶段、模块关闭阶段。php的cli模式下每次执行一个脚本都会完整的经历这些阶段,而FastCgi模式下则只会在启动时执行一次模块初始化阶段,然后接下来的各个请求只会执行请求初始化阶段、脚本执行阶段,请求关 ......
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的操作。
下一篇: Python分析三个月微博热搜疫情数据