PHP整个生命周期可以被划分为以下几个阶段:模块初始化阶段、请求初始化阶段、脚本执行阶段、请求关闭阶段、模块关闭阶段。根据不同的SAPI的实现,各阶段的执行情况会略有差异。比如命令模式下,每次执行一个脚本都会完整地经历这些阶段,而FastCgi模式下则在启动时执行一次模块初始化。
现在具体介绍下这5个阶段:
1、php_module_startup() 模块初始化阶段
本阶段主要进行php框架、Zend引擎的初始化操作,比如启动zend引擎、解析php.ini、将php.ini中配置的扩展加载到php中,注册php.ini中禁用的函数、类:disable_functions、disable_classes,等。
2、php_request_startup() 请求初始化阶段
该阶段是在请求处理前每个请求都会经历的一个阶段,对于Fpm而言,实在worker进程中accept一个请求并读取、解析完请求数据后的一个阶段。
主要完成以下几个操作:
激活输出:php_output_activate()。
初始化编译器、执行器、重置垃圾回收器、初始化全局变量符号表。
3、php_execute_script() 执行脚本阶段
该阶段包括php代码的编译、执行两个核心阶段,这也是Zend引擎最重要的功能。在编译阶段,php脚本将经历从php源码到抽象语法树再到opline指令的转化过程,最终生成的opline指令就是Zend引擎可以识别的执行指令,这些指令接着被执行器执行,这就是php代码解释执行的过程。
4、php_request_shutdown() 请求关闭阶段
与请求初始化阶段相反,此阶段将flush输出内容、发送header头、清理全局变量、关闭编译器、关闭执行器等。
5、php_module_shutdown() 模块关闭阶段
与模块初始化阶段相反,次阶段将清理资源、各php模块关闭等操作。
文章出自:https://www.daixiaorui.com/read/274.html 本站所有文章,除注明出处外皆为原创,转载请注明本文地址,版权所有。
蛋仔派对无限蛋币http://www.wzryzs.com/
666
666
很好的方法值得推荐
gg修改器https://www.guiyangtax.com/ 葫芦侠http://www.booj.net/ 八门神器http://www.tusovok.net/
gg修改器https://www.guiyangtax.com/ 葫芦侠http://www.booj.net/ 八门神器http://www.tusovok.net/