美文网首页
PHP的底层原理

PHP的底层原理

作者: 大也也 | 来源:发表于2019-03-26 10:34 被阅读0次

PHP文件的执行过程

先从一个简单的php文件开始,通过php文件的编译过程来引入php的底层

<?php
  $phpCode = '<?php echo "The bottom of PHP";?>';
  $tokens = token_get_all($phpCode);
  foreach($tokens as $key => $val){
     $tokens[$key][0] = token_name($val[0]);

  }
  var_dump($tokens);

执行结果如下:

array(6) {
  [0]=>
  array(3) {
    [0]=>
    string(10) "T_OPEN_TAG"
    [1]=>
    string(6) "<?php "
    [2]=>
    int(1)
  }
  [1]=>
  array(3) {
    [0]=>
    string(6) "T_ECHO"
    [1]=>
    string(4) "echo"
    [2]=>
    int(1)
  }
  [2]=>
  array(3) {
    [0]=>
    string(12) "T_WHITESPACE"
    [1]=>
    string(1) " "
    [2]=>
    int(1)
  }
  [3]=>
  array(3) {
    [0]=>
    string(26) "T_CONSTANT_ENCAPSED_STRING"
    [1]=>
    string(19) ""The bottom of PHP""
    [2]=>
    int(1)
  }
  [4]=>
  string(1) ";"
  [5]=>
  array(3) {
    [0]=>
    string(11) "T_CLOSE_TAG"
    [1]=>
    string(2) "?>"
    [2]=>
    int(1)
  }
}

编译程序是将高级语言变成计算机可识别的二进制语言。主要分为五个过程
词法分析->语法分析->语义检查和中间代码生成->代码优化->目标代码生成
对应的PHP的过程如下

image.png

opcode的数据结构如下

struct _zend_op {
    opcode_handler_t handler; //执行时调用的处理函数
    znode_op op1; //操作数1
    znode_op op2; //操作数2
    znode_op result; //结果
    ulong extended_value; //额外的信息
    uint lineno; //源码中的行数
    zend_uchar opcode; //opcode代码
    zend_uchar op1_type; //操作数1类型
    zend_uchar op2_type; //操作数1类型
    zend_uchar result_type; //结果类型
};

PHP四层体系

image.png
zend 引擎

C写的。用来实现上面的PHP语言编译

Extensions

围绕zend引擎,实现各种拓展

Sapi

apache2handler:这是以apache作为webserver,采用mod_PHP模式运行时候的处理方式,也是现在应用最广泛的一种。
cgi:这是webserver和PHP直接的另一种交互方式,也就是大名鼎鼎的fastcgi协议,在最近今年fastcgi+PHP得到越来越多的应用,也是异步webserver所唯一支持的方式。
cli:命令行调用的应用模式

相关文章

  • 0.PHP面试都问什么

    PHP基础语法知识PHP底层原理常见的算法实现MysqlRedisHTTP原理fast-cgi常见的Linux命令...

  • PHP的底层原理

    PHP文件的执行过程 先从一个简单的php文件开始,通过php文件的编译过程来引入php的底层 执行结果如下: 编...

  • php运行机制以及底层原理

    php看着很简单,但是要深入php的运行机制与原理也不是件容易的事,我们除了会使用之外还要知道它底层的工作原理,这...

  • PHP的运行机制与原理(底层)

    php看着很简单,但是要深入php的运行机制与原理也不是件容易的事,我们除了会使用之外还要知道它底层的工作原理,这...

  • PHP的运行机制与原理(底层)

    php看着很简单,但是要深入php的运行机制与原理也不是件容易的事,我们除了会使用之外还要知道它底层的工作原理,这...

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

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

  • Swoole生命周期

    PHP底层工作原理 PHP的相关进程是随着Web服务器如Apache、Nginx等的启动而运行的,这里以Apach...

  • Today面试

    Runloop 底层原理Kvo 底层原理ARC 底层原理 如何实现GCD 底层原理Block 底层原理Aut...

  • iOS底层原理:weak的实现原理

    iOS底层原理:weak的实现原理iOS底层原理:weak的实现原理

  • iOS--OC底层原理文章汇总

    OC底层原理01—alloc + init + new原理OC底层原理02—内存对齐OC底层原理03— isa探究...

网友评论

      本文标题:PHP的底层原理

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