php 执行流程

php编译执行流程

PHP 是解释型语言,其执行过程需先编译成中间代码,再经由特定的虚拟机,翻译成特定的指令被执行。其执行过程如下:

php 运行示意图

总结起来就是,大概就是php代码->Token->Ast->Opcode->执行。

  1. 源代码通过词法分析得到Token,Token是PHP切割成的有意义的标识。
  2. 基于语法分析将Token转化为抽象语法树,也就是AST,Token 就是一个个的词块,但是单独的词块不能表达完整的语义,还需要借助一定的规则进行组织串联。所以就需要语法分析器根据语法匹配Token,将 Token 进行串联。语法分析器串联完 Token 后的产物就是抽象语法树(AST,Abstract Syntax Tree)。
  3. 将语法树转换成 Opcode。需要将语法树转换成Opcode,才能被引擎直接执行。
  4. 执行 Opcodes,opcodes 是 opcode 的集合形式,是 PHP 执行过程中的中间代码。PHP工程优化措施中有一个比较常见的“开启 opcache”,指的技术这里将 opcodes 进行缓存。通过省去从源码到 opcode 的阶段,引擎直接执行缓存好的 opacode,以提升性能。

php 解析执行流程图

php7 内核架构

php 内核架构

zend 引擎

词法/语法分析、AST编译和 opcodes 的执行均在 Zend 引擎中实现。此外,PHP的变量设计、内存管理、进程管理等也在引擎层实现。

php层

zend 引擎为 PHP 提供基础能力,而来自外部的交互则需要通过 PHP 层来处理。

SAPI

server API 的缩写,其中包含了场景的 cli SAPI 和 fpm SAPI。只要遵守定义好的 SAPI 协议,外部模块便可与PHP完成交互。

扩展层

依据PHP或者ZEND引擎提供的核心能力和接口规范,可以进行开发扩展。

php生命周期

php生命周期


php 执行流程
https://randzz.cn/af4833295577/php-执行流程/
作者
Ezreal Rao
发布于
2021年5月31日
许可协议