最近没什么事,所以对PHP语言有了更深的了解,对源码做了一些研究,以及如何执行我们写的PHP脚本。1.1.3PHP相关组件1.1.3.1SAPIPHP本身可以理解为一个提供语言编译和执行服务的库函数。它有标准的输入输出,SAPI是PHP的访问层,接收用户请求,然后调用PHP内核提供的一些接口来完成PHP脚本的执行,所以严格来说SAPI不属于PHP内核。PHP的作用就像leveldb,实现了基本的存储功能,但是没有网络处理模块,而我们基于leveldb实现的完整的存储服务就像SAPI。PHP中常用的SAPI包括cli和php-fpm。cli是命令行下执行PHP脚本的实现:bin/phpscript.php,是单进程,处理模型比较简单,而php-fpm则比较复杂。实现网络处理模块以与网络服务器交互。1.1.3.2Zend引擎Zend是PHP语言实现中最重要的部分,是PHP最基础、最核心的部分。它的源代码在/Zend目录中。PHP代码由Zend编译和执行。以下章节大部分源码分析都是针对Zend的。Zend整体上由两部分组成:编译器:负责将PHP代码编译成抽象语法树,然后进一步编译成可执行的操作码。这个过程相当于GCC的工作。编译器是语言实现的基本执行器:负责执行编译器输出的操作码,即执行PHP脚本中编写的代码逻辑
