当前位置:首页 > Web开发 > 正文

浅谈PHP代码执行的大抵流程(opcode)

2024-03-31 Web开发

说到这个代码执行流程啊,咱也不说太多,先给大家分享一张图片:

技术图片

怎么样?有点了解了么。说实话,单看这个,我本人是有点懵的,不过,不要怕。咱们来慢慢地看下。

首先,在网上找的信息说PHP代码执行的挨次是这样的,第一步是词法分析,第二步是语法分析,,第三步是转化为opcode,第四部也就是挨次执行这些opcode了。

聪明如列位看到这里,再返回上面看一下这张图片,必定就会有不一样的觉得了。咱们借用一句话来论述这几个法式:当PHP拿到一段代码后,颠末词法解析、语法解析等阶段后,源措施会被翻译成一个个指令(opcodes),然后ZEND虚拟机按序执行这些指令完成操纵。

我们都知道,PHP自己是用C实现的,因此最终挪用的也是C的函数,实际上,我们可以把PHP看做一个C开发的软件。既然如此,那么PHP的代码执行的核心也就是翻译出来的一条一条指令,在这里就是opcode。

那么,我们就可以把opcode当作是PHP代码执行的最根基单位。所以PHP代码执行的素质也就可以理解为,我们的代码最终被翻译为一组opcode措置惩罚惩罚函数,完事之后再挨次执行。

有了这些认知之后,我们就来看下这个opcode究竟是什么鬼。素质上一个opcode由两个参数(op1,op2)、返回值和措置惩罚惩罚函数构成。它的官方解释就是PHP脚本编译后的中间语言,类似于java中的bytecode或者是.net中的MSL。

它的感化就是如下:

1、编译道理的中间过程会孕育产生一种中间代码(语言),PHP由Zend引擎(C语言编写)编译后的中间代码为Opcode然后再交由Zend引擎措置惩罚惩罚,如同C语言编译后汇编代码然后再交由汇编。

2、生成的Opcode作为一种中间语言,可以辅佐实现PHP源措施代码的不开源,如果你不想别人知道你的PHP代码是怎么写的,那你可以直接使用APC截取生成Opcode缓存文件,然后使用本身的PHP扩展加密措施对Opcode文件进行加密和解密,在Zend引擎对Opcode进行解析前进行解密然后再执行。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30801.html