摘要: $a=range(10000) refcount 1 $b=&$a ref (refcount=2) val(refcount=1) $a1=$a ref(refcount=2) val(refcount=2) unset($a) ref(refcount=1) val(refcount=2) un 阅读全文
posted @ 2019-03-22 11:15 taek 阅读(612) 评论(0) 推荐(0) 编辑
摘要: 将参数从左到在依次放到栈里 当调用函数时,将 阅读全文
posted @ 2019-03-22 11:14 taek 阅读(621) 评论(0) 推荐(0) 编辑
摘要: php重启 本质上是调用 execvp("/usr/local/php/sbin/php-fpm"); execvp就是用一个新的进程把自己替换掉,一个进程一旦调用exec类函数,它本身就"死亡"了,系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段与堆栈段,唯一留 阅读全文
posted @ 2019-03-22 11:14 taek 阅读(404) 评论(0) 推荐(0) 编辑
摘要: php-fpm有三种定时器 1)主进程接收到用户的信号,例如sigusr,主进程执行kill(子进程号,sigquit),的同时,设置定时器,在一个无限循环里如果当前时间 大于或等于 该定时器的过期时间,则主进程执行kill(子进程号,sigterm); 2)对于在php-fpm里设置了reques 阅读全文
posted @ 2019-03-22 11:13 taek 阅读(408) 评论(0) 推荐(0) 编辑
摘要: nginx和php-fpm是通过fastcgi协议进行通信的,php-fpm本身就是个socket服务端,nginx拿到url后,识别出.php结尾的地址后,会传给php-fpm,php-fpm通过预先启动的进程,调用php解释器 fastcgi消息有10种,其中有 fcgi_begin_reque 阅读全文
posted @ 2019-03-22 11:13 taek 阅读(430) 评论(0) 推荐(0) 编辑
摘要: php的词法分析 可以理解为 通过一定的规则,把输入的代码 区分出哪些是 是$开头的变量, 哪些是 以两个单引号括起来的字符串,哪些是以两个双引号括起来的字符串 等等, 这些区分出来的东西 称为token ,token 之间的联系 是由语法分析来完成的, 比如 赋值,加减乘除; 语法分析详见这里 语 阅读全文
posted @ 2019-03-22 11:12 taek 阅读(1543) 评论(0) 推荐(0) 编辑
摘要: 2. 针对extends 的函数 zend_do_fetch_class 3.ZEND_FETCH_CLASS_SPEC_CONST_HANDLER函数 4.zend_fetch_class_by_name函数 开始声明类 绑定父类 阅读全文
posted @ 2019-03-22 11:12 taek 阅读(674) 评论(0) 推荐(0) 编辑
摘要: 1.BNF范式 2.调用静态方法的编译 zend_do_begin_class_member_function_call 3.调用静态方法的编译 zend_do_end_function_call 阅读全文
posted @ 2019-03-22 11:12 taek 阅读(1776) 评论(0) 推荐(0) 编辑
摘要: http://ju.outofmemory.cn/entry/197064 http://www.fzb.me/2015-9-16-php7-implementation-hashtable.html http://ju.outofmemory.cn/entry/154095 http://www. 阅读全文
posted @ 2019-03-22 11:11 taek 阅读(2348) 评论(0) 推荐(0) 编辑
摘要: 1)词法分析 2)语法分析 unticked_statement: | T_UNSET '(' unset_variables ')' ';' //unset($a,$b) 还能这么用呢,第一次知道 unset_variables: unset_variable | unset_variables 阅读全文
posted @ 2019-03-22 11:11 taek 阅读(982) 评论(0) 推荐(0) 编辑
摘要: php的垃圾回收机制主要参考了http://blog.csdn.net/phpkernel/article/details/5734743 这文章。 变量对应的值,比如 $a="abc" abc在内核是以一个zval 的形式存在的,下面列出其zval 的定义 287 typedef struct _ 阅读全文
posted @ 2019-03-22 11:10 taek 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 参考文章 http://rapheal.sinaapp.com/2013/11/20/php_zend_hello_world/ http://www.douban.com/note/337885681/ 5.3 与以前版本的不同 http://my.oschina.net/mickelfeng/b 阅读全文
posted @ 2019-03-22 11:10 taek 阅读(2286) 评论(0) 推荐(0) 编辑
摘要: https://yq.aliyun.com/articles/38307 https://yq.aliyun.com/ziliao/132720 http://blog.liyiwei.cn/%E3%80%8A%E7%AE%97%E6%B3%95%E5%AF%BC%E8%AE%BA%E3%80%8B 阅读全文
posted @ 2019-03-22 11:09 taek 阅读(892) 评论(0) 推荐(0) 编辑
摘要: 参考 http://www.jianshu.com/p/dac223d7d9ad 事件对象结构 事件模块封装结构 初始化变量 ev 如果是io事件 则放到epoll_ctl,如果是定时器,则放到定时器队列里 如果是io事件,则放到epoll_ctl里 执行事件 阅读全文
posted @ 2019-03-22 11:08 taek 阅读(1305) 评论(0) 推荐(0) 编辑
摘要: 多个opcode组成一个op_array, 函数内的opcode与函数外的opcode属于不同的op_array 也就是说 第1行代码 和第2行代码 ,第5行代码 是属于同一个op_array 第3行代码 ,第4行代码 属于另一个op_array 那么执行的时候,EG(active_op_array 阅读全文
posted @ 2019-03-22 11:08 taek 阅读(997) 评论(0) 推荐(0) 编辑