上QQ阅读APP看书,第一时间看更新
2.2 PHP 7内核架构
经过上一节对PHP代码执行原理的简介,我们大概清楚了PHP 7执行脉络的各个主要部分的基本工作是什么,但是各个部分的输入/输出是如何串联的呢?
这就是接下来要介绍的重要角色——Zend引擎(Zend Engine),也就是前文提到的引擎。Zend引擎中包含了编译器和解释器,从PHP代码到opcode的执行,均由Zend引擎完成。
Zend引擎除了实现了PHP的核心功能,还提供了一套接口,让PHP可以在更多的场景中使用,如命令行环境、Web环境等。
我们通过图2-4,试图描述以Zend引擎为核心的组织架构。
图2-4 PHP7源码架构
该架构图大致分为四大部分。
1)Zend引擎:前文介绍的词法/语法分析、AST编译和opcodes的执行均在Zend引擎中实现。此外,PHP的变量设计、内存管理、进程管理等也在引擎层实现。引擎为PHP提供了基础服务,PHP的可靠性和高性能都依赖引擎的基础支撑。同时,Zend引擎的可扩展性,还是PHP得以大规模应用的重要原因之一。
2)PHP层:Zend引擎为PHP提供基础能力(如内存分配和回收),而来自外部的交互则需要通过PHP层来处理。
3)SAPI:SAPI是Server API的缩写,其中包含了常见的cli SAPI和fpm SAPI。PHP定义好输入/输出规范,依据此规范与PHP交互的一方都可以称为Server。这样做的好处便是Server方可以忽略PHP的内部实现,只要遵守定义好的SAPI协议,便可完成交互,极大丰富了PHP可以支持的Server类型。
4)扩展部分:Zend引擎提供了核心能力和接口规范。在此基础上开发的扩展,为PHP代码的性能和功能的多样性提供了更丰富的选项。
本书的后续章节基本上也是按照这里的组织结构,细分展开。