php内核探索笔记-解释器的执行过程
来源:互联网 发布:52单片机引脚图电路图 编辑:程序博客网 时间:2024/05/14 05:08
以CLI SAPI为例来对php执行核心部分进行解析。CLI是php命令行模式,此SAPI是默认安装的,在服务器端安装过PHP后,生成以一个可执行文件,可以在shell中调用PHP命令来执行。
PHP -f XX.php
执行流程:
- 解析命令行参数;
- 初始化环境;
- 编译执行PHP代码;
- 清理环境,退出;
在第3个阶段中,如何执行PHP脚本的:
通过调用php_execute_script( handle_file )来完成第三阶段,该函数最终会调用zend_execute_scipts( … ) ,这个函数是一个可变参函数,可以一次执行多个PHP脚本。
在zend_execut_scripts(…..)函数中核心调用了(zend_compile_file)( compile_file ), (*zend_execute)( zend_op_array )这两个函数;
- 通过调用zend_compile_file编译参数指定的php脚本文件,该函数会返回一个zend_op_array的结构指针;
- zend_execute传入的参数是zend_compile_file的返回值,就开始执行opcode了。
这两个函数是Zend API,是一个函数指针,在引擎初始化的时候回赋值具体的方法。
ps. 那为什么这两个Zend API是函数指针呢?
- 在引擎初始化的时候,zend_execute和zend_compile_file会在引擎初始化的时候指向默认的方法。我们可以在编译和执行重写函数的指向,这样就为我们扩展引擎时留下了钩子。例如:vld将zend_execute和zend_compile_file指向自己对原始函数封装后的函数,添加了opcode信息的输出。
0 0
- php内核探索笔记-解释器的执行过程
- 17.PHP内核探索:解释器的执行过程
- PHP内核探索:解释器的执行过程
- PHP内核探索:PHP脚本的执行细节
- 14.PHP内核探索:PHP脚本的执行细节
- PHP内核探索:PHP脚本的执行细节
- PHP内核探索:如何执行PHP脚本
- PHP内核探索:如何执行PHP脚本
- PHP内核探索:如何执行PHP脚本
- PHP内核之PHP解释器引擎执行流程
- php内核探索笔记-初窥
- PHP内核探索笔记-变量
- PHP内核探索笔记-函数
- PHP生命周期,内核执行过程
- php内核探索笔记-内存的申请与释放
- 17-解释器的执行过程
- PHP内核解密系列:zend_execute的执行过程
- 13.PHP内核探索:如何执行PHP脚本
- iOS语音播放之切换听筒和扬声器的方法解决方案
- 在Swing和Swt中使用JavaFX
- 扩展bootstrap的popover, 增加在指定时间内fadeOut的功能
- SQL Server 游标运用:查看所有数据库所有表大小信息
- tomcat clean--ContextLoaderListener ClassNotFoundException
- php内核探索笔记-解释器的执行过程
- JavaFX之Task的使用
- sublime text3中文输入法设置
- 备份数据库存储过程
- SQL Server 游标运用:批量创建、删除链接服务器
- JavaFX示例--TimeLine和Animation的使用
- SQL Server 游标运用:游标模板
- android studio 打开.jks文件,获取shai值和md5
- 05 BinarySortTree