美文网首页
Zend引擎

Zend引擎

作者: birjemin | 来源:发表于2018-01-21 16:05 被阅读16次

简介

The Zend Engine is the open source scripting engine that interprets the PHP programming language.

Zend引擎是开源的解释php语言的脚本引擎。

PHP执行示意图

Zend有两部分组成,即编译器和执行器。编译器负责将PHP代码编译为抽象语法树,然后进一步编译为可执行的opcodes,这个过程相当于GCC的工作,编译器是一个语言实现的基础;执行器负责执行编译器输出的Opcodes,也就是执行PHP脚本中编写的代码逻辑。 Opcode是将PHP代码编译产生的Zend虚拟机可识别的指令,php7共有173个Opcode,定义在zend_vm_opcodes.h中,PHP中的所有语法实现都是由这些opcode组成的。

Zend Engine最主要的特性就是把PHP的边解释边执行的运行方式改为先进行预编译(Compile),然后再执行(Execute)

详细原理

见链接3(我没看完,不太懂,还是太年轻啊~~)。

优缺点

  • 执行效率大幅提升
  • 降低解耦,可扩展增强
  • Zend Engine 将代码分成编译和执行两大部分。一般情况下,我们的代码完成以后就很少再去改变了。但执行时PHP却不得不重新编译,耗时并且浪费资源。(所以才有Opcache呀~)

Opcode

Opcode是一种PHP脚本编译后的中间语言,就像Java的ByteCode,或者.NET的MSL。PHP执行代码会经过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend):

  1.Scanning(Lexing) ,将PHP代码转换为语言片段(Tokens)
  2.Parsing, 将Tokens转换成简单而有意义的表达式
  3.Compilation, 将表达式编译成Opocdes
  4.Execution, 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能。

现在有的Cache比如APC、Opcache(APC止步于PHP 5.4,Zend Opcache从PHP 5.5 开始集成,取代APC。),可以使得PHP缓存住Opcodes,这样,每次有请求来临的时候,就不需要重复执行前面3步,从而能大幅的提高PHP的执行速度。 如下图:

http://upload.ouliu.net/i/20180110001550q4qct.png

小插曲

有一次线上发代码了(修改了数据库),但是数据库里面数据没进来,非常诡异,怀疑是代码没有发成功,后来leader在群里对运维说Opcache(原理就是缓存Opcodes)没有更新。。。小坑小坑

相关文章

  • Zend引擎

    简介 Zend引擎是开源的解释php语言的脚本引擎。 Zend有两部分组成,即编译器和执行器。编译器负责将PHP代...

  • PHP深入理解一

    PHP的核心组成,包括两部分 :ZEND引擎PHP内核。Zend引擎:负责代码的解析、翻译和执行(解释器部分),负...

  • PHP的运行机制与原理

    PHP模块 内核、zend引擎、扩展层 php内核用来处理请求,文件流,错误处理等相关操作,zend引擎用以将源文...

  • PHP原理涉猎

    PHP的执行是通过Zend engine(ZE, Zend引擎), ZE是用C编写PHP的常见变量类型: int...

  • VLD

    Vulcan Logic Dumper VLD(Vulcan Logic Dumper)是一个在Zend引擎中,以...

  • PHP简单入门

    1.PHP内核Zend PHP由内核Zend引擎和扩展层组成,PHP内核负责处理请求、完成文件流错误处理等操作,Z...

  • PHP底层原理以及代码执行过程

    PHP的底层原理 从图上可以看出,php从下到上是一个4层体系 Zend引擎Zend整体用纯c实现,是php的内核...

  • PHP内核探索:Zend引擎

    1,Zend引擎是PHP实现的核心,提供了语言实现上的基础设施。例如:PHP的语法实现,脚本的编译运行环境, 扩展...

  • 缓存------机制

    Zend引擎是脚本语言引擎(解析器+虚拟机),主要的工作就是解析,翻译和执行PHP脚本 。 一,缓存三要素: 只有...

  • PHP扩展

    php扩展运行原理 ①php运行原理zend引擎初始化 ->extensions->sapi->上层应用扩展运行原...

网友评论

      本文标题:Zend引擎

      本文链接:https://www.haomeiwen.com/subject/syxqaxtx.html