加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP内核探索之解释器的执行过程

发布时间:2020-12-13 04:06:34 所属栏目:PHP教程 来源:网络整理
导读:《:PHP内核探索之解释器的执行过程》要点: 本文介绍了:PHP内核探索之解释器的执行过程,希望对您有用。如果有疑问,可以联系我们。 PHP实战 cli(Command Line Interface)即PHP的命令行模式,现在此SAPI是默认安装的,我们在服务器上安装完PHP之后,一般会生

《:PHP内核探索之解释器的执行过程》要点:
本文介绍了:PHP内核探索之解释器的执行过程,希望对您有用。如果有疑问,可以联系我们。

PHP实战cli(Command Line Interface)即PHP的命令行模式,现在此SAPI是默认安装的,我们在服务器上安装完PHP之后,一般会生成一个可执行文件,假设此文件为/usr/local/bin/php,那么我们在SHELL下可以用以下命令来执行一个PHP脚本:

代码如下:

/usr/local/bin/php -f test.php

PHP实战以CLI SAPI为例来对php执行核心部分进行解析.CLI是php命令行模式,此SAPI是默认安装的,在服务器端安装过PHP后,生成以一个可执行文件,可以在shell中调用PHP命令来执行.

代码如下:

PHP -f XX.php

PHP实战执行流程:

PHP实战解析命令行参数;

PHP实战初始化环境;

PHP实战编译执行PHP代码;

PHP实战清理环境,退出;

PHP实战在第3个阶段中,如何执行PHP脚本的:

PHP实战通过调用php_execute_script( handle_file )来完成第三阶段,该函数最终会调用zend_execute_scipts( … ),这个函数是一个可变参函数,可以一次执行多个PHP脚本.

PHP实战在zend_execut_scripts(…..)函数中核心调用了(zend_compile_file)( compile_file ),(*zend_execute)( zend_op_array )这两个函数;

PHP实战通过调用zend_compile_file编译参数指定的php脚本文件,该函数会返回一个zend_op_array的结构指针;

PHP实战zend_execute传入的参数是zend_compile_file的返回值,就开始执行opcode了.

PHP实战这两个函数是Zend API,是一个函数指针,在引擎初始化的时候回赋值具体的办法.

PHP实战ps.:那为什么这两个Zend API是函数指针呢?

PHP实战在引擎初始化的时候,zend_execute和zend_compile_file会在引擎初始化的时候指向默认的办法.我们可以在编译和执行重写函数的指向,这样就为我们扩展引擎时留下了钩子.例如:vld将zend_execute和zend_compile_file指向自己对原始函数封装后的函数,添加了opcode信息的输出.

欢迎参与《:PHP内核探索之解释器的执行过程》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读