PHP

PHP 生命周期

Posted by Angkee on June 28, 2019

PHP 运行模式大多分为两种 Web 模式、Cli 模式。无论哪种模式,PHP 生命周期都是一样的,作为一种 SAPI 运行。

SAPI(Server Application Programming Interfac) 服务端应用编程接口,SAPI 通过一系列钩子函数,使 PHP 和其他应用解耦分离,交换处理数据,这是 PHP 非常优雅的设计,这个设计的优点是不用考虑 PHP,和其他应用之间的兼容问题。

  • 单进程 PHP 生命周期

单进程SAPI生命周期 PHP 生命周期关键词

  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 钩子函数