文章列表

时间管理随想

February 21, 2017

上周给自己制定了一个周计划,把博客从 Linode 里迁移到 Github Page,顺便换一个 SS 服务器。这个想法早在去年就诞生了,却一直被拖延到了现在。以前一直觉得是拖延症在作祟,觉得自己有病,总想找个什么药方治一治。有时喝了点鸡汤,就觉得自己被治好了,可没过几天又旧症复发。最后,我觉得自己可能都没有救了...

PHP 内核分析经验谈:工具篇

February 04, 2017

最近,我在分析 PHP 内核的过程中,使用到一些工具,总结了这些工具的使用方法,分享给大家。 VLD VLD(Vulcan Logic Dumper)是 PHP 的一个扩展。它以钩子的方式嵌入到 Zend 引擎中,收集并打印 PHP 脚本编译时期产生所有的 OPCODE。使用它,我们可以很方便地查看 PHP ...

PHP 内核分析:类与对象

February 01, 2017

类是什么,什么是对象,相信不需要我在这里解释。本文也不是要说什么OO思想,而是想探究一个问题。作为 PHP 底层的实现 C 语言,是一个面向过程的语言,C 语言是如何构建出可以使用类与对象的 PHP(PHP 绝对称不上是面向对象的语言),这就是本文探讨的重点。为了方便查阅,也方便说明,以下所涉及的源码和实现均来源...

PHP 内核分析:变量

January 15, 2017

变量 变量的数据结构 变量保存在 zval 的结构体中(与 PHP5 相同,但数据结构做了很大改变)。zval 结构体定义在 Zend/zend_types.h 文件中,结构体如下: typedef struct _zval_struct zval; struct _zval_struct { ...

[译] PHP7 数组:HashTable

November 17, 2016

简介 几乎每个C程序中都会使用到哈希表。鉴于C语言只允许使用整数作为数组的键名,PHP 设计了哈希表,将字符串的键名通过哈希算法映射到大小有限的数组中。这样无法避免的会产生碰撞,PHP 使用了链表解决这个问题。 众多哈希表的实现方式,无一完美。每种设计都着眼于某一个侧重点,有的减少了 CPU 使用率,有的更合...