PHP源码阅读笔记三十三:PHP5.3新增加的垃圾回收机制(Garbage Collection)基础 PHP5.3中新增加了垃圾回收机制,据说很先进,据说引诱了我去看看其先进的实现。 官方说明文档请猛击 Garbage Collection 中文版地址:http://docs.php.net/manual/zh/features.gc.php 【垃圾回收机…
PHP源码阅读笔记三十二:PHP内存池中的emalloc/efree层与堆(heap)层 emalloc/efree层是整个内存体系中最上层结构,它通过与堆层的交换使用PHP自带的内存管理机制。如果有设置USE_ZEND_ALLOC为0,则直接使用malloc/free等函数直接操作内存。 这里将从emalloc与efree两个函数的实现解析emalloc/…
PHP源码阅读笔记三十一:PHP内存池中的堆(heap)层基础 【概述】 PHP的内存管理器是分层(hierarchical)的。这个管理器共有三层:存储层(storage)、堆(heap)层和 emalloc/efree 层。在 PHP源码阅读笔记三十:PHP内存池中的存储层 中介绍了存储层,存储层通过 malloc()、mmap() 等函数向系统真正的申…
PHP源码阅读笔记三十:PHP内存池中的存储层 【概述】 PHP的内存管理器是分层(hierarchical)的。这个管理器共有三层:存储层(storage)、堆(heap)层和 emalloc/efree 层。存储层通过 malloc()、mmap() 等函数向系统真正的申请内存,并通过 free() 函数释放所申请的内存。存储层通常申请的内存块都比较大,…
PHP源码阅读笔记二十九:接口的继承 在之前有看过PHP源码中 类的继承 ,今天我们看下PHP中的接口继承是如何实现的。 同样我们从CachingIterator类开始查找接口的继承实现。 CachingIterator extends IteratorIterator implements OuterIterator , Traversable , Ite…
PHP源码阅读笔记二十八:类结构和继承 作为面向对象中一个非常关键也非常纠结的特性,我们需要了解一些 在PHP5中,从一开始就有了继承的概念,今天我们从PHP源码出发,了解他是怎么实现的。 在了解类的继承之前,我们需要知道类在PHP源码中是以哪种方式存储的。 找到zend/zend.h 418行: struct _zend_class_entry { cha…
PHP源码阅读笔记二十七:PHP对构造方法的识别 众所周知,由于历史原因,PHP之前是使用类名作为构造函数,在PHP5中引入的新的构造函数__construct。为了实现向后兼容性,如果 PHP 5 在类中找不到 __construct() 函数,它就会尝试寻找旧式的构造函数,也就是和类同名的函数。因此唯一会产生兼容性问题的情况是:类中已有一个名为 __co…
PHP源码阅读笔记:PHP中的快速排序实现的简化版本 这段时间在复习数据结构,有看到排序及经典的快速排序 于是有了看下PHP中实现排序的方式,在Zend目录下我们可以看到zend_qsort.c文件及zend_qsort.h文件 这是PHP实现快速排序的文件所在 从代码中我们可以看到,也许是为了兼容多种数据类型,所以其在交换及比较位置比较复杂,看起来也比较纠…