2018年3月23日

php-5.6.26源代码 - hash存储结构 - 添加

摘要: 添加 if (zend_hash_add(&module_registry, lcname, name_len+1, (void *)module, sizeof(zend_module_entry), (void**)&module_ptr){ // zend_hash_add 定义在文件“php-5.6.26\Zend\zend_hash.h” #... 阅读全文

posted @ 2018-03-23 18:10 周~~ 阅读(216) 评论(0) 推荐(0) 编辑

php-5.6.26源代码 - hash存储结构 - 初始化

摘要: 初始化 有指定析构函数,在销毁hash的时候会调用,如:“类似extension=test.so扩展”也是存放在HashTable中的,“类似extension=test.so扩展”的module_shutdown_func函数就是靠hash的析构函数来调用的 zend_hash_init_ex(GLOBAL_FUNCTION_TABLE, 100, NULL, ZEND_FUN... 阅读全文

posted @ 2018-03-23 18:09 周~~ 阅读(128) 评论(0) 推荐(0) 编辑

php-5.6.26源代码 - hash存储结构 - hash算法

摘要: // zend_inline_hash_func 实现在文件“php-5.6.26\Zend\zend_hash.h” h = zend_inline_hash_func(arKey, nKeyLength); { // zend_hash_add 定义在文件“php-5.6.26\Zend\zend_hash.h” /* ... 阅读全文

posted @ 2018-03-23 18:06 周~~ 阅读(202) 评论(0) 推荐(0) 编辑

php-7.2.3源代码和php-5.6.26源代码摘录,对比 “汇编php文件”和“执行opcode代码”

摘要: php-7.2.3 在“汇编php文件”和“执行opcode代码”上做了大量改变php-5.6.26 没见到支持抽象语法树的相关代码,php-7.2.3 见到支持抽象语法树的相关代码php-5.6.26 存在“保存active_op_array现场”的代码,php-7.2.3 去除了“保存activ 阅读全文

posted @ 2018-03-23 17:12 周~~ 阅读(286) 评论(0) 推荐(0) 编辑

php-5.6.26源代码 - include_once、require_once、include、require、eval 的opcode处理器

摘要: # ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER 实现在文件 php-5.6.26\Zend\zend_vm_execute.h static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE ze... 阅读全文

posted @ 2018-03-23 10:58 周~~ 阅读(288) 评论(0) 推荐(0) 编辑

php-5.6.26源代码 - 如何用C语言支持“类似异常”机制

摘要: 代码编写在文件php-5.6.26\Zend\zend.h #define zend_bailout() _zend_bailout(__FILE__, __LINE__) #ifdef HAVE_SIGSETJMP # define SETJMP(a) sigsetjmp(a, 0) // 设置跳转点 # define L... 阅读全文

posted @ 2018-03-23 10:57 周~~ 阅读(160) 评论(0) 推荐(0) 编辑

php-5.6.26源代码 - opcode处理器,“函数调用opcode”处理器,如何调用扩展模块的函数

摘要: // opcode处理器 --- ZEND_DO_FCALL_SPEC_CONST_HANDLER实现在 php-5.6.26\Zend\zend_vm_execute.h static int ZEND_FASTCALL ZEND_DO_FCALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE zva... 阅读全文

posted @ 2018-03-23 10:56 周~~ 阅读(164) 评论(0) 推荐(0) 编辑

php-5.6.26源代码 - opcode处理器,“乘法opcode”处理器

摘要: // opcode处理器 - 运算符怎么执行: “*” 乘法opcode处理器 static int ZEND_FASTCALL ZEND_MUL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE SAVE_OPLINE(); fast_mul_function(&EX_T(oplin... 阅读全文

posted @ 2018-03-23 10:51 周~~ 阅读(169) 评论(0) 推荐(0) 编辑

php-5.6.26源代码 - 扩展模块的加载、注册

摘要: // main实现在文件 php-5.6.26\sapi\cgi\cgi_main.c int main(int argc, char *argv[]) { .... cgi_sapi_module->startup(){ // php_cgi_startup实现在文件 php-5.6.26\sapi\cgi\cgi_main.c ... 阅读全文

posted @ 2018-03-23 10:50 周~~ 阅读(189) 评论(0) 推荐(0) 编辑

php-5.6.26源代码 - 扩展模块的种类,扩展模块的执行埋点

摘要: 模块种类(两种) 类型一:zend的模块:(类似zend_extension=test.so) 识别方法: php.ini中以zend_extension开头的配置,如zend_extension=test.so,存放到数据结构zend_extensions中 模块的数据结构: struct _zend_... 阅读全文

posted @ 2018-03-23 10:43 周~~ 阅读(243) 评论(0) 推荐(0) 编辑

php-5.6.26源代码 - opcode处理器的注入

摘要: 1、初始化 opcode处理器列表 // main实现在文件“php-5.6.26\sapi\cgi\cgi_main.c” int main(int argc, char *argv[]) { if (cgi_sapi_module.startup(&cgi_sapi_module){ // php_cgi_startup实现在文件“php-5.6.26\... 阅读全文

posted @ 2018-03-23 10:35 周~~ 阅读(248) 评论(0) 推荐(0) 编辑

php-5.6.26源代码 - opcode列表

摘要: 文件 php-5.6.26/Zend/zend_vm_opcodes.h 阅读全文

posted @ 2018-03-23 10:28 周~~ 阅读(265) 评论(0) 推荐(0) 编辑

php-5.6.26源代码 - opcode执行

摘要: 文件 php-5.6.26/Zend/zend_vm_execute.h 阅读全文

posted @ 2018-03-23 10:26 周~~ 阅读(174) 评论(0) 推荐(0) 编辑

php-5.6.26源代码 - PHP文件汇编成opcode(require、include的差异)

摘要: 文件 php-5.6.26/Zend/zend_language_scanner.c 阅读全文

posted @ 2018-03-23 10:24 周~~ 阅读(206) 评论(0) 推荐(0) 编辑

php-5.6.26源代码 - PHP文件汇编成opcode、执行

摘要: 文件 php-5.6.26/Zend/zend.c 阅读全文

posted @ 2018-03-23 10:07 周~~ 阅读(273) 评论(0) 推荐(0) 编辑

导航