您当前的位置:首页 > 生活分享

.php如何运行(php运行原理)

发布时间:2022-04-20 08:58:01

一、php7的执行原理概述

我们了解到的高级编程语言大体分为两种:一种是编译型语言,一种是解释型语言,像c、go语言等就是编译型语言,在应用程序执行之前,就将程序代码翻译成汇编语言,然后根据软硬件环境编译成目标文件。而解释型语言,在程序运行时才被翻译成机器语言,执行一次解释一次,所以效率相对较低。

在php7中,源代码首先进行词法分析,将代码切分为多个字符串单元,分割后的字符串叫做token,独立的token是无法表达语义的,需要经过语法分析,将token转换成抽象语法树(AST)。之后,抽象语法树在转换为机器指令执行,这些指令在php中成为opcode。如常见的 echo 对应的opcode指令就是ZEND_ECHO。

(1)token

token是php代码被切割成的有意义的标识,通过token_get_all()函数查看到token的值转换成一个二维数组,每个成员数组的第一个值为token对应的枚举值,第二个值为token对应的字符串内容,第三个值为代码对应的行号。

(2)AST

token是一个个单独的“词块”,需要借助规则来串联,串联后的产物就是php7新增的AST,实现了php编译器和解释器的解耦,有效提升了可维护性。

(3)opcodes

AST扮演了源码到中间代码的临时存储介质的角色,还需要转换成opcode才能被引擎执行,opcode是单独指令,opcodes是opcode的集合形式,是php执行过程中的中间代码,类似java的字节码,opcode生成之后由虚拟机执行。

我们知道,php工程优化中有个比较常见的开启“开启opcache”。指的就是opcodes缓存,通过省去了从源码到opcode的阶段,引擎直接执行缓存的opcode,以提升性能。

声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。
标签:执行 语言 代码 指令 转换成
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
热门点击
  • 测绘工程需要考研吗,女生测绘工程考研方向
  • 南汇在哪里(浦东新区哪个镇最穷)
  • 为什么客户会流失(流失的客户怎样维护回来)
  • 跳高世界纪录是多少(跳远9米20不被承认)
  • 在家如何赚钱(程序员怎么接私活赚钱)
  • 沁园前置过滤器价格表,沁园净水机更换滤芯
  • 运动鞋哪些好(运动鞋中最好的品牌)
  • 100毫升等于多少克(500毫升等于500克吗)
  • 国家林草局拟规定:国家公园核心保护区原则上禁止人为
  • 1kg等于多少g(1公斤等于多少毫克)
  • 标签云
    鲁能队   期足彩   匹克   督战   德怀特   更衣   蒂安   压阵   到会   吃惊   幼年   热血沸腾   马基   此时此刻   急于   埃托奥   提供各种   勃列日涅夫   农博会   节衣缩食   疯魔   拿了   世界大学生运动会   诺布尔   教宗   同组   卡德罗夫   里尔克   振奋   大族   我看过   战前   都将   低估   这届   幕僚   队医   有约   图瓦   兰卡   亮出   奇耻大辱   讲理   啦啦队员   望而生畏   新华社发   意大利杯   独立日   仪仗队   数码产品   拉希德   伢子   抢下   无果   染红   克瑞   失单   负于   炮轰   福井   征召   养伤   合围   十件   三强   勃朗宁   义无反顾   北体大   运筹帷幄   萨利   苦练   哈姆   花样游泳   大官   以弱胜强   体育明星   马路上   限令   十强   蓄势待发   高度评价   士气   圆月   好人家   策应   弗拉门   高居   合同期   民宅   披甲   中国体育   迷们   怎能不   上蹿下跳   伯顿   北京奥运   要她   一个女孩   有一套   施压
    大爱生活网 | 网站内容来自网络,如有侵权请联系我们,立即删除! | 沪ICP备15034965号