php内核
文章平均质量分 64
刨根问底
这个作者很懒,什么都没留下…
展开
-
php源码分析 (第一章)
环境 lsb_release -a LSB Version: :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch Distributor ID: CentOS Description: CentOS release原创 2011-11-13 23:09:35 · 1249 阅读 · 0 评论 -
菜鸟看php内核源码第三章
很多地方还是看不懂,当个笔记记录下来,不对的地方大家直接指正 通过sapi/cli/php_cli.c入口文件开始一步步分析 1 _sapi_module_struct a) name b) pretty_name c) startup => (int (*)(struct_sapi_module_str原创 2011-11-16 01:19:05 · 3975 阅读 · 0 评论 -
php源码函数汇总(持续更新)
hash相关的函数或者宏 1 HASH_OF(p)(暂时只考虑array) Z_ARRVAL_P(p) => Z_ARRVAL(*p) => (zval).value.ht 获取zval中的hash指针HashTable *ht 2 zend_hash_internal_pointer_reset(h) 初始化hashtable中的pInternalP原创 2011-12-02 12:32:20 · 697 阅读 · 0 评论 -
http_globals全局变量初始化(待续)
参考鸟哥的文章:http://www.laruence.com/2008/04/04/17.html 主要在php_request_startup函数中 问题:在代码什么位置放入PG(http_globals)的,流程是怎样的 1 PG(http_globals)[i] = NULL;//将除了TRACK_VARS_REQUEST以外的初始化为null 2 PG(reg原创 2011-12-02 17:26:12 · 1476 阅读 · 0 评论 -
菜鸟分析php源码 第二章
入口文件 1 sapi/cli/php_cli.c 619 main入口文件 784 调用php_cli_startup=> 调用php_module_startup 2 main/main.c原创 2011-11-14 18:06:59 · 1545 阅读 · 0 评论 -
php json_encode扩展分析
环境 php5.3源码下的json扩展包原创 2011-12-07 15:41:31 · 653 阅读 · 0 评论 -
gdb方式遍历EG(symbol_table) 哈希表的key
Sara Golemon写过一篇文章,里面提到:“是否存在特别的地方可以找到GLOBALS数组?”答案是“存在”,就是EG(symbol_table)-Executor Globals结构,她也给出了找的具体实例,如下 PHP_FUNCTION(confirm_getGlobal_compiled) { char *varname; int varname_len;原创 2011-12-07 18:05:40 · 1850 阅读 · 0 评论 -
详解类的静态成员变量
首先说下静态变量和全局变量的区别,全局变量可以被所有函数访问,如果多个独立的函数使用了同名的变量,就会导致冲突,在只有一个函数需要访问某个变量时,我们应该优先使用静态变量,而不是全局变量 类中的静态成员,它属于整个类而不是属于类的某个实例,静态成员只保留一个变量值,而这个变量值对所有的实例都是有效的,所有的实例共享这个成员。 $this表示类的当前实例,Self::表示的是类本身 在类之外的代原创 2011-12-30 15:01:25 · 741 阅读 · 0 评论 -
hash冲突导致ddos,详细跟踪
1 2$size = 4; 3$array = array(); 4for ($key = 0, $maxKey = ($size - 1) * $size; $key 5 $array[$key] = 0; 6 } 通过打印p *execute_data->opline->handler可以获得 ZEND_INIT_ARRAY_SPEC_UNU原创 2011-12-31 13:41:59 · 1188 阅读 · 0 评论