zoukankan      html  css  js  c++  java
  • php 执行流程

    php 的执行流程还是比较底层的知识了,带大家了解一下

    先直接上个流程图

    四个步骤:

    1. 扫描,将代码转换成Tokens
    2. 解析,将Tokens 转换成有意义的表达式
    3. 编译,将表达式编译成opcodes 指令
    4. 执行,顺序执行opcodes指令

    归纳:

    PHP动态语言执行过程:拿到一段代码后,经过词法解析、语法解析等阶段后,源程序会被翻译成一个个指令(opcodes),然后ZEND虚拟机顺次执行这些指令完成操作。

    PHP本身是用C实现的,因此最终调用的也是C的函数,实际上,我们可以把PHP看做一个C开发的软件。

    PHP的执行的核心是翻译出来的一条一条指令,也是opcode。所以Opcode是PHP程序执行的最基本单位。

    在计算机科学领域中,操作码(Operation Code, OPCode)被用于描述机器语言指令中,指定要执行某种操作的那部分机器码,构成OPCode的指令格式和规范由处理器的指令规范指定。

    一个opcode由两个参数(op1,op2)、返回值和处理函数组成。PHP程序最终被翻译为一组opcode处理函数的顺序执行。

    zend 引擎执行了先关的函数

    ZEND_ASSIGN_SPEC_CV_CV_HANDLER : 变量分配 ($a=$b)
    ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER:函数调用
    ZEND_CONCAT_SPEC_CV_CV_HANDLER:字符串拼接 $a.$b
    ZEND_ADD_SPEC_CV_CONST_HANDLER: 加法运算 $a+2
    ZEND_IS_EQUAL_SPEC_CV_CONST:判断相等 $a==1
    ZEND_IS_IDENTICAL_SPEC_CV_CONST:判断相等 $a===1

    哪有什么直男,只要你够好看,都能变成弯的。

  • 相关阅读:
    leetcode643.滑动窗口例题
    BZOJ4195 离散化+并查集
    luogu线性表刷题
    2021-5-29 周报博客
    2021-5-28 日报博客
    2021-5-27 日报博客
    2021-5-26 日报博客
    2021-5-25 日报博客
    2021-5-24 日报博客
    梦断代码阅读笔记之二
  • 原文地址:https://www.cnblogs.com/fangdada/p/14975286.html
Copyright © 2011-2022 走看看