php生命周期 及opcode的理解

php生命周期

PHP生命周期 和请求周期的关系,引擎是什么?php应用什么引擎,作用是什么

生命周期共分为

  1. 模块初始化阶段
  2. 请求初始化阶段
  3. 执行脚本阶段
  4. 请求关闭阶段
  5. 模块关闭阶段
    -(请求周期为 2 、3、4步骤)

细化各阶段

  1. 模块初始化阶段分为
    –激活SAPI
    –启动PHP输出
    –初始化垃圾回收器
    –启动zend引擎
    –解析PHP.ini
    –映射PHP、zend核心的PHP.INI文件(加载框架,添加和重载一些php函数)
    –注册静态编译的扩展(只是注册)
    –注册动态加载的扩展(同上)

  2. 请求初始化
    –激活输出
    –激活zend引擎

    • 设置垃圾回收器
    • 初始化编译器
    • 初始化执行器
    • 初始化词法扫描器

    –激活sapi
    –回调request startup钩子函数(????)

  3. 执行脚本阶段
    –编译阶段

    • php源代码
    • 抽象语法树
    • opline指令

    –执行阶段

  4. 请求关闭阶段
    –flash输出内容
    –发送http应答报头
    –清理全局变量
    –关闭编译器
    –关闭执行器

  5. 没模块关闭阶段
    –进行资源清理
    –php各模块关闭操作
    –回调各扩展module shutdown钩子函数

PHP引擎

  • 引擎为zend Engine

作用

  • 提到引擎作用就要,知道opcode是什么,
  • php生命周期 及opcode的理解_第1张图片
    php生命周期 及opcode的理解_第2张图片
    php生命周期 及opcode的理解_第3张图片
    php生命周期 及opcode的理解_第4张图片
  • 钩子函数?钩子函数又是什么,要先了解回调函数
  • 所谓回调函数,一般就是把函数的地址作为参数传进去,让调用的函数在内部可以调用这个函数。
    例子:
    void CALLBACK fun(){…} 这是一个函数,回调函数
    void AAA(int a, Fun* p); 这是一个普通函数,但第二个参数是fun
    AAA(5, fun);
    钩子函数,严格算起来,也算是回调函数的一种。但钩子函数是针对的截取的,当你使用了钩子之后,每当触发到相对应的消息,系统就会先“执行你写的回调函数”。
    即原本是:系统–>目标函数
    使用钩子就变成:系统–>你写的回调函数–>目标函数
    大概原理就是这样子。

你可能感兴趣的:(it,php)