随笔分类 - PHP
摘要:$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
阅读全文
摘要:php重启 本质上是调用 execvp("/usr/local/php/sbin/php-fpm"); execvp就是用一个新的进程把自己替换掉,一个进程一旦调用exec类函数,它本身就"死亡"了,系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段与堆栈段,唯一留
阅读全文
摘要:php-fpm有三种定时器 1)主进程接收到用户的信号,例如sigusr,主进程执行kill(子进程号,sigquit),的同时,设置定时器,在一个无限循环里如果当前时间 大于或等于 该定时器的过期时间,则主进程执行kill(子进程号,sigterm); 2)对于在php-fpm里设置了reques
阅读全文
摘要:nginx和php-fpm是通过fastcgi协议进行通信的,php-fpm本身就是个socket服务端,nginx拿到url后,识别出.php结尾的地址后,会传给php-fpm,php-fpm通过预先启动的进程,调用php解释器 fastcgi消息有10种,其中有 fcgi_begin_reque
阅读全文
摘要:php的词法分析 可以理解为 通过一定的规则,把输入的代码 区分出哪些是 是$开头的变量, 哪些是 以两个单引号括起来的字符串,哪些是以两个双引号括起来的字符串 等等, 这些区分出来的东西 称为token ,token 之间的联系 是由语法分析来完成的, 比如 赋值,加减乘除; 语法分析详见这里 语
阅读全文
摘要:1.BNF范式 2.调用静态方法的编译 zend_do_begin_class_member_function_call 3.调用静态方法的编译 zend_do_end_function_call
阅读全文
摘要:2. 针对extends 的函数 zend_do_fetch_class 3.ZEND_FETCH_CLASS_SPEC_CONST_HANDLER函数 4.zend_fetch_class_by_name函数 开始声明类 绑定父类
阅读全文
摘要:1)词法分析 2)语法分析 unticked_statement: | T_UNSET '(' unset_variables ')' ';' //unset($a,$b) 还能这么用呢,第一次知道 unset_variables: unset_variable | unset_variables
阅读全文
摘要: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.
阅读全文
摘要:php的垃圾回收机制主要参考了http://blog.csdn.net/phpkernel/article/details/5734743 这文章。 变量对应的值,比如 $a="abc" abc在内核是以一个zval 的形式存在的,下面列出其zval 的定义 287 typedef struct _
阅读全文
摘要:参考文章 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
阅读全文
摘要: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
阅读全文
摘要:参考 http://www.jianshu.com/p/dac223d7d9ad 事件对象结构 事件模块封装结构 初始化变量 ev 如果是io事件 则放到epoll_ctl,如果是定时器,则放到定时器队列里 如果是io事件,则放到epoll_ctl里 执行事件
阅读全文
摘要:多个opcode组成一个op_array, 函数内的opcode与函数外的opcode属于不同的op_array 也就是说 第1行代码 和第2行代码 ,第5行代码 是属于同一个op_array 第3行代码 ,第4行代码 属于另一个op_array 那么执行的时候,EG(active_op_array
阅读全文
摘要:./configure --prefix=/usr/local/php7.1.5 --with-curl --with-iconv-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pear --wi
阅读全文
摘要:无意间看到了php中关于加,减,乘,除 的计算方法 这里 http://lxr.php.net/source/xref/PHP-5.6/Zend/zend_operators.h#596 其中第653行中的宏 LONG_SIGN_MASK 定义为 在64位机下,LONG_SIGN_MASK的值为 1
阅读全文
摘要:之前一直没看过php中是如何定义一个常量的,今天空闲的时候看了下,发现其机制也很简单 在php中定义常量 有define,和const两个方法 区别是define是个函数 const是个结构 define不能用于类中 可以用define 定义一个表达式, const不能定义为一个表达式 const
阅读全文
摘要:main函数里 当kill -TERM pid 时, http://redfoxli.github.io/php-fpm-signals.html 这篇文章 说是 1)master主进程接收到sigterm信号,并执行回调函数sig_handler,往sp[1]写字符T, 事先sp[0]已经写到ep
阅读全文
摘要:php7的特点是规则上不从堆上分配内存,改为从栈上分配内存, 因为有些场景是从堆上分配内在后,还要手动释放内存,利用栈分配内在快的特点,在有需要的时候,再在堆上分配内在 但是栈上分配的内存,不能返回,因为当函数运行完后,就退栈了,但可以将该内在地址传给别的函数 php7的hashTable中的Buc
阅读全文

浙公网安备 33010602011771号