php脚本执行过程

上传人:油条 文档编号:20305377 上传时间:2017-09-09 格式:PDF 页数:2 大小:236.04KB
返回 下载 相关 举报
php脚本执行过程_第1页
第1页 / 共2页
php脚本执行过程_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《php脚本执行过程》由会员分享,可在线阅读,更多相关《php脚本执行过程(2页珍藏版)》请在金锄头文库上搜索。

1、1、 php脚本执行过程 : php脚本经过 zend引擎编译后,变成 opcode序列,就像机器能执行汇编指令一样, opcode就对应于这些指令,只是这些指令是在 zend引擎的虚拟机上执行。在 zend中,每一个 opcode都有一个对应的处理函数 handler。 整个过程大概如下: php 脚本 zend 引擎编译生成 opcode 序列 zend_op_arrayzend 引擎虚拟机执行这个opcode序列。 在生成 opcode序列的同时,会同时设置好每个 opcode的处理函数,执行该 opcode时,就是调用这个处理函数。 所有 opcode的定义在文件 zend_vs_op

2、codes.h中, 5.3.0版本一共定义了 153个 opcode opcode的一个操作在 zend内部表示为 zend_op结构: zend_compile.h: typedef struct _zend_op zend_op; struct _zend_op opcode_handler_t handler; znode result; znode op1; znode op2; ulong extended_value; uinit lineno; zend_uchar opcode; ; 结构中包括一个 opcode,两个操作数,一个返回,以及一个处理函数。如果这个 opcode

3、只有一个操作数,那么 op2 的 op_type 会被设置为 IS_UNUSED(由 SET_UNUSED 宏设置,IS_UNUSED = 1op1.op_type*5+zend_vm_decodeop-op2.op_type 。zend_vm_decode。从这个关系中会发现,对结果有影响的是三个 因素: opcode, op1.op_type和 op2.op_type。 zend_vm_execute.h是自动生成的 在预定义的所有处理函数中,都会执行 ZEND_VM_NEXT_OPCODE()宏,在 zend_execute.c中定义: #define ZEND_VM_NEXT_OPCODE() CHECK_SYMBOL_TABLES() EX(opline)+; ZEND_VM_CONTINUE() 从宏定义中看出,先检查符号表,然后将 opline 加 1(EX(opline)宏展开后就是execute_data.opline),然后执行 ZEND_VM_CONTINUE()宏,而这个宏直接返回 0。 4、 opcode序列 zend_op_array的执行 : 由函数 execute(zend_op_array *op_array TSRMLS_DC)执行,函数中一个无线循环,直到执行完 opline上的所有 opcode。但是找不到在哪里调用 execute函数的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号