欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP生命周期

程序员文章站 2022-05-04 11:18:07
PHP的整个生命周期被划分为以下几个阶段:模块初始化阶段、请求初始化阶段、执行脚本阶段、请求关闭阶段、模块关闭阶段。php的cli模式下每次执行一个脚本都会完整的经历这些阶段,而FastCgi模式下则只会在启动时执行一次模块初始化阶段,然后接下来的各个请求只会执行请求初始化阶段、脚本执行阶段,请求关 ......

php的整个生命周期被划分为以下几个阶段:模块初始化阶段、请求初始化阶段、执行脚本阶段、请求关闭阶段、模块关闭阶段。php的cli模式下每次执行一个脚本都会完整的经历这些阶段,而fastcgi模式下则只会在启动时执行一次模块初始化阶段,然后接下来的各个请求只会执行请求初始化阶段、脚本执行阶段,请求关闭阶段。

  1. minit(module init 模块初始化)
  • 启动 php 输出、初始化垃圾回收器
  • 启动 zend 引擎、注册 zend 核心扩展、zend 标准常量
  • 解析 php.ini,映射 php.ini 相关配置
  • 注册静态、动态编译的扩展
  • 回调各扩展定义的 module starup 钩子函数

用一句话来说,就是初始化类、常量、扩展等 php 所用到的资源

  1. rinit(request init 请求初始化)

php 初始化脚本执行的基本环境,sapi 将控制权交给 php,激活 zend 引擎,初始化执行器

  1. php 脚本执行

zend 引擎接管控制权,将 php 脚本编译成 opcodes,并顺序执行

  1. rshutdown (request shutdown 请求结束)

php 脚本执行完之后进入请求结束阶段,php 启动清理程序,这个阶段,将 flush 输出内容,发送 http 响应内容,关闭 php 执行器

  1. mshutdown(module shutdown 模块关闭)

这个阶段主要是进行资源的清理、php 各模块的关闭操作,同时,将回调各扩展的 module shutdown 钩子函数,这是发生在所有请求都已经结束之后,例如关闭fpm的操作。