排序:
默认
按更新时间
按访问量

55-函数的分类

55-函数的分类函数是一种可以在任何被需要的时候执行的代码块。它不仅仅包括用户自定义的函数,还包括程序语言实现的库函数。用户定义的函数如下所示手册中的展示函数用途的伪代码:function foo($arg_1, $arg_2, ..., $arg_n) { echo "Exam...

2016-04-26 12:31:37

阅读数:581

评论数:0

54-数组源码分析

54-数组源码分析PHP中经常使用数组,使用数组最大的好处便是速度!读写都可以在O(1)内完成,因为它每个元素的大小都是一致的,只要知道下标,便可以瞬间计算出其对应的元素在内存中的位置,从而直接取出或者写入。那么内核中是如何实现的呢?PHP大部分功能,都是通过HashTable来实现,其中就包括数...

2016-04-26 12:31:23

阅读数:632

评论数:0

53-数组操作

53-数组操作当你在扩展中使用HashTable时候,95%是要存储用户端的变量,就像PHP语言中数组那样。为此,内核中已经准备好了相应的工具,来让我们更加的方便的操作HashTable存储zval*,也就是PHP语言中的数组,即IS_ARRAY常量代表的zval,以下用{数组}来代替PHP语言中...

2016-04-26 12:31:01

阅读数:553

评论数:0

52-使用哈希表API

52-使用哈希表APIZend把与HashTable有关的API分成了好几类以便于我们寻找,这些API的返回值大多都是常量SUCCESS或者FAILURE。创建HashTable下面在介绍函数原型的时候都使用了ht名称,但是我们在编写扩展的时候,一定不要使用这个名称,因为一些PHP宏展开后会声明这...

2016-04-26 12:30:43

阅读数:5056

评论数:0

51-数组与链表

51-数组与链表在C语言中,我们可以自定义各种各样的数据结构,用来把很多数据保存在一个变量里面,但是每种数据结构都有自己的优缺点,PHP内核规模如此庞大,是否已经找到了一些非常棒的解决方法呢?我们在选择各种数据结构时,往往会考虑我们需要处理的数据规模以及需要的性能。下面让我们简要的看一下看C语言中...

2016-04-26 12:30:20

阅读数:595

评论数:0

50-写时复制COW机制

50-写时复制COW机制写时复制(Copy-on-Write,也缩写为COW),顾名思义,就是在写入时才真正复制一份内存进行修改。 COW最早应用在*nix系统中对线程与内存使用的优化,后面广泛的被使用在各种编程语言中,如C++的STL等。 在PHP内核中,COW也是主要的内存优化手段。 在前面关...

2016-04-26 12:30:07

阅读数:1718

评论数:0

49-内存管理中的cache

49-内存管理中的cache在维基百科中有这样一段描述: 凡是位于速度相差较大的两种硬件之间的,用于协调两者数据传输速度差异的结构,均可称之为Cache。 从最初始的处理器与内存间的Cache开始,都是为了让数据访问的速度适应CPU的处理速度, 其基于的原理是内存中“程序执行与数据访问的局域性行为...

2016-04-26 12:29:38

阅读数:712

评论数:0

48-PHP5.3的垃圾回收机制

48-PHP5.3的垃圾回收机制垃圾回收机制是一种动态存储分配方案。它会自动释放程序不再需要的已分配的内存块。 自动回收内存的过程叫垃圾收集。垃圾回收机制可以让程序员不必过分关心程序内存分配,从而将更多的精力投入到业务逻辑。 在现在的流行各种语言当中,垃圾回收机制是新一代语言所共有的特征,如Pyt...

2016-04-26 12:29:05

阅读数:926

评论数:0

47-引用计数与写时复制

47-引用计数与写时复制对于PHP这种需要同时处理多个请求的程序来说,申请和释放内存的时候应该慎之又慎,一不小心便会酿成大错。另一方面,除了要安全申请和释放内存外,还应该做到内存的最小化使用,因为它可能要处理每秒钟数以千计的请求,为了提高系统整体的性能,每一次操作都应该只使用最少的内存,对于不必要...

2016-04-26 12:28:30

阅读数:5015

评论数:0

46-内存的申请与销毁

46-内存的申请与销毁PHP底层对内存的管理, 围绕着小块内存列表(free_buckets)、 大块内存列表(large_free_buckets)和 剩余内存列表(rest_buckets)三个列表来分层进行的。 ZendMM向系统进行的内存申请,并不是有需要时向系统即时申请, 而是由Zend...

2016-04-26 12:23:06

阅读数:798

评论数:0

45-PHP的内存管理

45-PHP的内存管理内存管理一般会包括以下的内容: 是否有足够的内存供我们的程序使用; 如何从足够可用的内存中获取部分内存; 对于使用后的内存,是否可以将其销毁并将其重新分配给其它程序使用。 与此对应,PHP的内容管理也包含这样的内容,只是这些内容在ZEND内核中是以宏的形式作为接口提供给外部使...

2016-04-26 12:22:24

阅读数:970

评论数:0

44-Zend内存管理器

44-Zend内存管理器在PHP里,我们可以定义字符串变量,比如 Free the Mallocs每个平台操作内存的方式都是差不多的有两个方面,一负责申请,二负责释放。如果应用程序向系统申请内存,系统便会在内存中寻找还没有被使用的地方,如果有合适的,便分配给这个程序,并标记下来,不再给其它的程序了...

2016-04-26 12:19:26

阅读数:586

评论数:0

43-内存管理开篇

43-内存管理开篇内存是计算机非常关键的部件之一,是暂时存储程序以及数据的空间,CPU只有有限的寄存器可以用于存储计算数据,而大部分的数据都是存储在内存中的,程序运行都是在内存中进行的。和CPU计算能力一样, 内存也是决定计算效率的一个关键部分。计算中的资源中主要包含:CPU计算能力,内存资源以及...

2016-04-26 12:18:43

阅读数:577

评论数:0

42-变量类型的转换

42-变量类型的转换PHP是弱类型的动态语言,在前面的章节中我们已经介绍了PHP的变量都存放在一个名为ZVAL的容器中, ZVAL包含了变量的类型和各种类型变量的值。 PHP中的变量不需要显式的数据类型定义,可以给变量赋值任意类型的数据, PHP变量之间的数据类型转换有两种:隐式和显式转换。隐式类...

2016-04-26 12:18:15

阅读数:620

评论数:0

41-全局变量Global

41-全局变量Globalglobal语句的作用是定义全局变量,例如如果想在函数内访问全局作用域内的变量则可以通过global声明来定义。 下面从语法解释开始分析。1. 词法解析查看 Zend/zend_language_scanner.l文件,搜索 global关键字。我们可以找到如下代码:&l...

2016-04-26 12:17:58

阅读数:514

评论数:0

40-变量的value和type存储

40-变量的value和type存储PHP是一种弱类型的脚本语言,弱类型不表示PHP的变量没有类型区分,PHP变量有8种原始类型:四种标量类型: boolean(布尔型) integer(整型) float(浮点型) string(字符串) 两种复合类型: array(数组) object(对象)...

2016-04-26 12:17:35

阅读数:815

评论数:0

39-诡异的变量名

39-诡异的变量名在PHP语言中,变量都是保存在哈希表中,称为变量符号表,其中变量名为哈希表的键,变量名对应的容器zval的指针为哈希表中的值。所有全局变量放在一张主符号表中(也就是数组GLOBALS对应的哈希表)。PHP语言有个特性,变量在命名时,GLOBALS对应的哈希表)。PHP语言有个特性...

2016-04-25 12:28:10

阅读数:574

评论数:0

38-变量作用域

38-变量作用域变量的作用域是变量的一个作用范围,在这个范围内变量为可见的,即可以访问该变量的代码区域, 相反,如果不在这个范围内,变量是不可见的,无法被调用。 (全局变量可以将作用范围看作为整个程序) 如下面的例子:(会输出什么样的结果呢?)<?php $foo = 'nowama...

2016-04-25 12:27:47

阅读数:481

评论数:0

37-变量赋值与销毁

37-变量赋值与销毁在强类型的语言当中,当使用一个变量之前,我们需要先声明这个变量。然而,对于PHP来说, 在使用一个变量时,我们不需要声明,也不需要初始化,直接对其赋值就可以使用,这是如何实现的?在PHP中没有对常规变量的声明操作,如果要使用一个变量,直接进行赋值操作即可。在赋值操作的同时已经进...

2016-04-25 12:27:27

阅读数:804

评论数:0

36-变量的生命周期

36-变量的生命周期通过前面章节的描述,我们已经知道了PHP中变量的存储方式--所有的变量都保存在zval结构中。 下面介绍一下PHP内核如何实现变量的定义方式以及作用域。在ZE进行词法和语法的分析之后,生成具体的opcode,这些opcode最终被execute函数(Zend/zend_vm_e...

2016-04-25 12:27:04

阅读数:464

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭