本文共 630 字,大约阅读时间需要 2 分钟。
PHP开始执行以后会经过两个主要阶段:
1.处理请求之前的开始阶段 2.请求之后的结束阶段开始阶段有两个过程:
1)过程是模块初始化阶段(MINIT),在整个SAPI声明周期内,该过程只执行一次. 2)过程是模块激活阶段(RINIT),该过程发生在请求阶段,例如请求某页面,则在每次请求之前都会进行模块激活(RINIT请求开始).例如PHP注册了一些扩展模块,则在MITIT阶段会回调所有模块的初始化函数.模块在这个阶段可以进行一些初始化工作,例如注册常量,定义模块使用的类等等.模块在是显示可以通过PHP_MINIT_FUNCTION() 函数来返回注册常量或类初始化操作
请求到达之后,PHP初始化执行脚本的基本环境, 例如创建一个执行环境,然后保存PHP运行过程中变量名称和值内容的符号表,以及当前所有函数等.然后PHP会调用所有模块的RINIT函数,在这个阶段各个模块也能执行一些相关操作,模块的的RINIT函数与初始化回调(MINIT)函数类似: PHP_RINIT_FUNCTION
请求处理完成后就进入了结束阶段,一般脚本执行到末尾或者通过调用exit()或die()函数,PHP都将进入结束阶段.和开始阶段对应,结束阶段也分两个环节
1,在请求结束后停用模块(RSHUWDOWN 对应 RINIT) 2,在SAPI声明周期结束时,关闭模块(MSHUTDOWN,对应MINIT) PHP_RSHUTDOWN_FUNCTION具体流程如图所示