PHP 7内核架构
经过上一节对 PHP 代码执行原理的简介,我们大概清楚了 PHP 7 执行脉络的各个主要部分的基本工作是什么,但是各个部分的输入/输出是如何串联的呢?这就是接下来要介绍的重要角色——Zend 引擎(Zend Engine),也就是前文提到的引擎。Zend 引擎中包含了编译器和解释器,从 PHP 代码到 opcode
的执行,均由 Zend 引擎完成。
Zend 引擎除了实现了 PHP 的核心功能,还提供了一套接口,让 PHP 可以在更多的场景中使用,如命令行环境、Web 环境等。
我们通过图2-4,试图描述以 Zend 引擎为核心的组织架构。

该架构图大致分为四大部分。
-
Zend 引擎:前文介绍的词法/语法分析、
AST
编译和opcodes
的执行均在 Zend 引擎中实现。此外,PHP 的变量设计、内存管理、进程管理等也在引擎层实现。引擎为 PHP 提供了基础服务,PHP 的可靠性和高性能都依赖引擎的基础支撑。同时,Zend 引擎的可扩展性,还是 PHP 得以大规模应用的重要原因之一。 -
PHP 层:Zend 引擎为 PHP 提供基础能力(如内存分配和回收),而来自外部的交互则需要通过 PHP 层来处理。
-
SAPI: SAPI 是 Server API 的缩写,其中包含了常见的 cli SAPI 和 fpm SAPI。PHP 定义好输入/输出规范,依据此规范与 PHP 交互的一方都可以称为 Server。这样做的好处便是 Server 方可以忽略 PHP 的内部实现,只要遵守定义好的 SAPI 协议,便可完成交互,极大丰富了 PHP 可以支持的 Server 类型。
-
扩展部分:Zend 引擎提供了核心能力和接口规范。在此基础上开发的扩展,为 PHP 代码的性能和功能的多样性提供了更丰富的选项。
本书的后续章节基本上也是按照这里的组织结构,细分展开。