分享

PHP生命周期

 小世界的野孩子 2020-05-27

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的操作。




 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多