php内核探索
ypb455360299
这个作者很懒,什么都没留下…
展开
-
23.PHP内核探索:翻译一篇HashTables文章
In case you ever heard me talking about PHP internals I certainly mentioned something along the lines of "Everything in PHP is a HashTable" that's not true, but next to a zval the HashTable is one of转载 2014-11-10 15:27:01 · 615 阅读 · 0 评论 -
22.PHP内核探索:PHP哈希算法设计
Hash Table是PHP的核心,这话一点都不过分。PHP的数组、关联数组、对象属性、函数表、符号表等等都是用HashTable来做为容器的。 PHP的HashTable采用的拉链法来解决冲突,这个自不用多说,我今天主要关注的就是PHP的Hash算法,和这个算法本身透露出来的一些思想。 PHP的Hash采用的是目前最为普遍的DJBX33A (Daniel J. Bernstein,转载 2014-11-10 15:06:31 · 633 阅读 · 0 评论 -
1.PHP内核探索:从SAPI接口开始
SAPI:Server Application Programming Interface 服务器端应用编程端口。研究过PHP架构的同学应该知道这个东东的重要性,它提供了一个接口,使得PHP可以和其他应用进行交互数据。 本文不会详细介绍每个PHP的SAPI,只是针对最简单的CGI SAPI,来说明SAPI的机制。 我们先来看看PHP的架构图: SAPI指的是PHP具体应用的编程转载 2014-10-10 17:36:04 · 837 阅读 · 0 评论 -
16.PHP内核探索:PHP里的opcode
struct _zend_op { opcode_handler_t handler; // 执行该opcode时调用的处理函数 znode result; znode op1; znode op2; ulong extended_value; uint lineno; zend_uchar opcode; // opcode转载 2014-10-11 11:07:04 · 493 阅读 · 0 评论 -
17.PHP内核探索:解释器的执行过程
这里将介绍引擎内部执行一个PHP脚本的流程,以CLI SAPI为例子来对流程中核心的部分做简单介绍,省去一些初始化及清理操作。 CLI(Command Line Interface)即PHP的命令行模式,现在此SAPI是默认安装的,我们在服务器上安装完PHP之后,一般会生成一个可执行文件,假设此文件为/usr/local/bin/php ,那么我们在SHELL下可以用以下命令来执行一个PHP转载 2014-10-20 15:30:09 · 627 阅读 · 0 评论 -
18.PHP内核探索:变量概述
现代编程语言中的基本元素主要有:变量,流程控制接口,函数等等。我能否不使用变量来编写程序呢? 这显然是可以的,例如:转载 2014-10-21 11:36:01 · 516 阅读 · 0 评论 -
20.PHP内核探索:PHP中的哈希表
PHP中使用最为频繁的数据类型非字符串和数组莫属,PHP比较容易上手也得益于非常灵活的数组类型。 在开始详细介绍这些数据类型之前有必要介绍一下哈希表(HashTable)。 哈希表是PHP实现中尤为关键的数据结构。 哈希表在实践中使用的非常广泛,例如编译器通常会维护的一个符号表来保存标记,很多高级语言中也显式的支持哈希表。 哈希表通常提供查找(Search),插入(Insert),删除(De转载 2014-11-05 17:14:52 · 568 阅读 · 0 评论 -
21.PHP内核探索:理解Zend里的哈希表
在PHP的Zend引擎中,有一个数据结构非常重要,它无处不在,是PHP数据存储的核心,各种常量、变量、函数、类、对象等都用它来组织,这个数据结构就是HashTable。 HashTable在通常的数据结构教材中也称作散列表,哈希表。其基本原理比较简单(如果你对其不熟悉,请查阅随便一本数据结构教材或在网上搜索),但PHP的实现有其独特的地方。理解了HashTable的数据存储结构,对我们分析P转载 2014-11-05 17:56:09 · 602 阅读 · 0 评论 -
19.PHP内核探索:变量存储与类型
先回答前面一节的那个问题吧。转载 2014-10-21 11:51:07 · 653 阅读 · 0 评论