PHP底层探索(二):一次请求的开始与结束

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

具体流程如图所示
这里写图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章