位置: 编程技术 - 正文

深入理解PHP原理之执行周期分析(php底层原理)

编辑:rootadmin

推荐整理分享深入理解PHP原理之执行周期分析(php底层原理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php的运行原理,php基本原理,php的理解,php 原理,php 原理,php 原理,深入理解php原理答案,深入理解php原理答案,内容如对您有帮助,希望把文章链接给更多的朋友!

本文讲述了PHP原理之执行周期。分享给大家供大家参考,具体如下:

PHP的执行周期,从最初我们编写的PHP脚本->到最后脚本被执行->得到执行结果,这个过程,其实可以分为如下几个阶段:

首先,Zend Engine(ZE),调用词法分析 器(Lex生成的,源文件在 Zend/zend_language_sanner.l), 将我们要执行的PHP源文件,去掉空格 ,注释,分割成一个一个的token。

然后,ZE会将得到的token forward给语法分析 器(yacc生成, 源文件在 Zend/zend_language_parser.y),生成一个一个的opcode,opcode一般会以op array的形式存在,它是PHP执行的中间语言。

最后,ZE调用zend_executor来执行op array ,输出结果。(也就是将源文件转换成机器语言,然后在虚拟机上运行它。)

ZE是一个虚拟机,正是由于它的存在,所以才能使得我们写PHP脚本,完全不需要考虑所在的操作系统类型是什么,这才是PHP的可移植性的原因。ZE是一个CISC(复杂指令处理器),它支持条指令(具体指令在 Zend/zend_vm_opcodes.h),包括从最简单的ZEND_ECHO(echo)到复杂的 ZEND_INCLUDE_OR_EVAL(include,require),所有我们编写的PHP都会最终被处理为这条指令(op code)的序列,从而最终被执行。

PHP是一个脚本语言,也就是说,用户编写的PHP代码最终都是会被PHP解释器解释执行,所有编写的PHP代码,都会被翻译成PHP的虚拟机ZE的虚拟指令(OPCODES)来执行。

那我们的PHP脚本,最终被“翻译"成什么样的呢? 也就是说,op code长的什么样子呢? Opcode是一种PHP脚本编译后的中间语言。

在PECL中已经有这样的模块,利用由 Derick Rethans开发的VLD (Vulcan Logic Dissassembler)模块。你只要下载这个模块,并把他载入PHP中,就可以通过简单的设置,来得到脚本翻译的结果了。

VLD模块的安装以及应用:

深入理解PHP原理之执行周期分析(php底层原理)

编辑php.ini文件并激活vld扩展。

实例:

创建一个文件,如:hello.php

执行:

看另一个:

执行:

注:ZEND_HANDLE_EXCEPTION 就是 Zend/zend_vm_opcodes.h 中第条指令

compiled vars: !0 = $i 此处是获取变量名"i"的变量于!0(*zval)。#0 将字符串"this+is+a+string"赋值(ASSIGN)给!0#1 字符串连接#2 显示

这些中间代码会被Zend VM(Zend虚拟机)直接执行。真正负责执行的函数是:zend_execute(zend_execute.h)。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数学运算技巧总结》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

深入理解PHP之源码目录结构与功能说明 本文讲述了PHP源码目录结构与功能说明。分享给大家供大家参考,具体如下:PHP之所以能在web开发语言中排名靠前,不仅仅是因为语法简单,上手容易

PHP模块化安装教程 本文讲述了PHP模块化安装的方法。分享给大家供大家参考,具体如下:PHP(HypertextPreprocessor)这门虽然简单但功能却是非常强大的脚本语言,下面就基

PHP邮箱验证示例教程 在用户注册中最常见的安全验证之一就是邮箱验证。根据行业的一般做法,进行邮箱验证是避免潜在的安全隐患一种非常重要的做法,现在就让我们来

标签: php底层原理

本文链接地址:https://www.jiuchutong.com/biancheng/296270.html 转载请保留说明!

上一篇:深入理解PHP之OpCode原理详解(php的oop的理解)

下一篇:深入理解PHP之源码目录结构与功能说明(php zend原理)

  • 怎么计算土地增值税的相关税金
  • 税务师考试报名
  • 资源税改革是什么意思
  • 个人所得税汇算清缴情况报告
  • 收到存款利息怎么写分录
  • 财务报表和信息的区别
  • 连号发票不许报销的具体发票类型
  • 固定资产残值怎么处理什么时候处理
  • 境外企业转让非居民企业
  • 单位部分承担个人借款利息个税的计算
  • 外商投资企业所得税法第八条
  • 出口供货企业
  • 收到的借款利息计入什么科目
  • 企业如何申请定增资金
  • 代开的专票开错了怎么办?
  • 房开公司需要资质吗
  • 企业职工福利费扣除标准
  • 公司周年庆典费用计入什么科目
  • 客户少付货款怎么做账
  • 跨年如何冲减预提费用?
  • 材料未到,货款尚未支付
  • 固定资产可以一次折旧完吗
  • 我开了一个物流公司,有人要开发票怎么办
  • 预提利息的分录怎么做
  • windows11怎么回退
  • 冲减管理费用的情况
  • 鸿蒙系统怎么安装电脑
  • yii2局部关闭(开启)csrf的验证的实例代码
  • 员工不愿意缴纳个税 需要公司承担吗
  • 销售金额较大多少算较大
  • 中小微企业社保补贴
  • php 跨域
  • 微信小程序解锁安全吗
  • 【深度学习】详解 MAE
  • 用ipconfig/all命令不能显示
  • blkid命令详解
  • 给员工期权和给股票的区别
  • 支付价款含不含增值税
  • 如何简单去除
  • 增值税政策执行口径存在的问题及建议
  • 服务业加计扣除比例
  • 房地产企业的开发成本和开发费用有什么区
  • 出纳各种费用如何归类
  • python装饰器如何保留原函数信息
  • 织梦系统
  • 给对方开发票需要
  • 研发费用资本化条件有哪些
  • 个人劳务费用
  • 撤销红字发票申请表
  • 网上打印出来的手机买卖协议有效吗
  • 以前年度损益调整结转到哪里
  • 限定性净资产包括哪三个方面
  • 政府部门城投公司融资安全吗
  • 小规模企业提现到自己个人银行卡需要交多少税
  • 转出未交增值税年末怎么转平
  • 销售返利的账务处理案例
  • 库存商品差额调整会计目录
  • 子公司向母公司借钱
  • mysql常见故障和解决方法
  • windowsxp显卡驱动在哪个位置
  • freebsd查看硬盘信息
  • android x86 4.0 iso
  • win7旗舰版怎么把桌面移动到其他盘
  • windows7很卡
  • Windows系统通过注册表实现打开CMD并定位到指定文件夹
  • xp桌面底部任务在右边
  • centos停止程序
  • centos 安装选择
  • Win7系统无法安装SQL2000
  • win8系统自带应用都打不开了怎么办
  • linuxmint设置中文
  • 关于超链接下列说法中错误的是
  • Android笔记本
  • cmd for /f
  • javascript:void(0)的作用示例介绍
  • eclipse开发安卓app实例
  • jQuery webuploader分片上传大文件
  • node.js mysql
  • android中toast用法
  • 广西税务申报增值税时为什么打开表格时总是加载中
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设