跳到主要内容

PHP 是怎么工作的

php 是一门适用于 web 开发的动态语言,它可以说是一个用 C语言实现的包含大量组件的软件框架

虽然没必要像 Java 那样背 PHP 的八股文,但是基本的工作原理还是需要懂的,例如它是如何部署在 Nginx 上运行的?PHP 的线程策略是怎么样的?PHP 不能做哪些事情?

从上图可以看出,PHP 从下到上是可以分为 4 层:

1、Zend 引擎(核心) Zend 引擎整体用C语言实现,是 PHP 的内核部分,它负责将 PHP 代码翻译(词法、语法解析等一系列编译过程)为可执行的 opcode 操作码,并实现相应的处理方法、基本的数据结构(如 hashtable、oo)、内存分配及管理、提供相应的 API 方法供外部调用。

2、Extensions(扩展) 围绕着 Zend 引擎,Extensions 通过组件化的方式提供各种基础服务,我们常见的各种内置函数(例如变量操作函数、字符串操作函数等)以及标准库等都是通过 Extensions 来实现。

用户也可以根据需要实现自己的 Extension 组件以达到功能扩展、性能优化等目的

3、SAPI(服务器应用程序编程接口) SAPI 全称是 Server Application Programming Interface,译为 “服务器应用程序编程接口”。

SAPI 通过一系列钩子函数,使得 PHP 可以和外围交互数据,这是 PHP 非常优雅和成功的一个设计,通过 SAPI 成功的将 PHP 本身和上层应用解耦隔离,PHP 可以不再考虑如何针对不同应用进行兼容,而应用本身也可以针对自己的特点实现不同的处理方式。

References

PHP运行原理和机制