企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
:-: ![](https://img.kancloud.cn/28/39/28392f5df40d63f0d81aeaeaba8a9f81_461x486.png) ## Zeed 引擎 Zeed 引擎是 PHP4 以后加入到 PHP,是对原有 PHP 解释器的重写,整体使用 C 语言开发,也可以把PHP理解成用C写的一个编程语言软件。引擎的作用是将 PHP 代码翻译为一种名为 Opcode 的中间语言,类似于Java 的 ByteCode(字节码)。 实现了基本的数据结构、内存分配及管理,提供了相应的API方法供外部调用。**是一切的核心,所有的外围功能均围绕Zend实现**。 Zeed 引擎执行 PHP 程序代码的四个步骤: ~~~text 1. 词法分析 Scanning(Lexing):将 PHP 代码转换成语言片段(Tokens) 2. 解析 Parsing:将 Tokens 转换成简单而有意义的表达式 3. 编译 Complication:将表达式编译成 Opcode 4. 执行 Execution:顺序执行 Opcode,每次一条,从而实现 PHP 脚本功能 ~~~ Opcache 扩展可以将 Opcode 缓存,在处理重复请求时省略 1、2、3步过程,以加速 PHP 运行速度。 ## Extensions 扩展 通过组件式的方式提供各种基础服务,常见的内置函数、标准库都是通过 Extensions 来实现的。用户可以根据需求安装不同扩展。 ## SAPI(服务端应用编程接口) Server Application Programming Interface 缩写,服务端应用编程接口。通过一系列钩子函数使得 PHP 可以和外围交换数据,SAPI 就是 PHP 和外部环境的代理器,成功的将 PHP 本身和上层应用解耦隔离,PHP 可以不用考虑针对不同应用实现兼容,而且应用也可针对自己的特点实现不同的处理方式。 常用四种SAPI : - **CGI** CGI 即通用网关接口(Common Gateway Interface),是服务器与后台语言交互的协议,它把网页和 WEB 服务器中的执行程序连接起来,把从 HTML 接收的指令传递给服务器的执行程序,再把服务器执行程序的结果返还给 HTML 页。CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。 CGI 在每次连接请求时都需要 fork 一个全新进程进行处理,完后返回结果,关闭进程,这就是 fork-and-execute 模式。CGI 方式的服务器有多少连接请求就会有多少 CGI 子进程,子进程反复加载是 CGI 性能低下的主要原因。 - **FastCGI** ` fast-cgi` 是 CGI 的升级版本,可以看成是一个常驻内存的 CGI,它允许在一个进程内处理多个请求,而不是一个请求处理完毕就直接结束进程。 工作原理: ~~~text FastCGI 先启动一个 Master 进程,解析配置文件,初始化执行环境,然后在启动多个 Worker 进程。 当请求过来时,Master 会传递给一个 Worker ,然后立即可以接收下一个请求。 ~~~ - **PHP-FPM** FastCGI 协议的一个实现,任何实现了 FastCGI 协议的服务器都能够与之通信。 PHP 进程管理器,包含 Master 和 Worker 进程两种进程。Master 进程只有一个,负责监听端口,接收来自服务器的请求,而 Worker 进程有多个(根据实际需要配置),每个进程的内部都嵌入了一个 PHP 解释器,是 PHP 代码真正执行的地方。 - **CLI** CLI 是 PHP 的命令运行模式 - **Apache 模块的 DLL** 在模块化(DLL)中,PHP是与Web服务器一起启动并运行(是apache在CGI的基础上进行的一种扩展,加快PHP的运行效率) ## Application 上层应用 我们日常编写的 PHP 代码程序,无论是 Web 应用还是 CLI 方式运行的应用都是上层应用,PHP 程序员主要工作就是编写它们。