PHP 基础架构

1、sapi:PHP是一个脚本解析器,提供脚本的解析和执行,它输入的是普通的脚本,然后由害怕解析器按照预定义好的语法规则进行解析执行。我们可以在不同的环境中应用这个解析器,比如命令行,web环境中,为此,PHP提供了一个sapi层以适配不同的应用环境,sapi可以认识是PHP的宿主环境,aspi也是整个PHP框架最外层的一部分。它主要负责PHP框架的初始化工作。经常用到的两个sapi是cli、fpm。

2、zendVM: PHP语言的核心实现,它主要由两部分组成:编译器和执行器。其中编译器负责把PHP代码解释为执行器可识别的指令,执行器负责执行编译器解释出指令

3、extension;扩展是PHP内核提供的一套用于扩充PHP功能的一种方式。

PHP的整个生命周期被划分为以下几个阶段:

1、模块初始化阶段(激活sapi、启动PHP输出、初始化垃圾回收器、其中zend引擎)

2、请求初始化阶段

3、执行脚本阶段(PHP代码的编译和执行,这是zend引擎最重要的功能,在编译阶段PHP脚本将经历从PHP源代码到抽象语法树再到opline指令的转化过程最终生成的opline指令就是zend引擎可识别的执行代码)

4、请求关闭阶段

5、模块关闭阶段。

根据不同的sapi的实现,各阶段的执行情况也会有一些差异,比如命令行模式下,每次执行一个脚本都会完整的经历这些阶段,而fastcgi模式下则在启动时执行一次模块初始化,然后各个请求只尽力请求初始化、执行脚本、请求关闭几个阶段,在sapi关闭时经历模块关闭阶段。

生命周期:main()->模块初始化阶段(php_module_startup())->请求初始化阶段(php_request_startup())-脚本执行阶段(php_execute_script())-请求关闭阶段(php_request_shutdown)-模块关闭阶段(php_module_shutdown)

猜你喜欢

转载自www.cnblogs.com/weiluoyan/p/8835932.html