- 博客(12)
- 资源 (2)
- 收藏
- 关注
转载 PHP7内核剖析之变量的内部实现
PHP7内核剖析之变量的内部实现转自http://mp.weixin.qq.com/s/xgG8S5m8icpTUvG6r0uAsAPHP变量实现的基础结构是zval,各种类型的实现均基于此结构实现,是PHP中最基础的一个结构,每个PHP变量都对应一个zval,下面就看下这个结构以及PHP变量的内存管理机制。zval结构zval结构比较简单,内嵌
2017-03-06 10:22:15
1209
原创 xhprof php7问题
xhprof php7 问题 xhprof 是facebook 开发的一个测试php性能的扩展,现存的问题xhprof不支持php7,代码已经几年没有更新过了, 由于Facebook的优化方向是HHVM,所以这个扩展可以预见不会再有官方维护了。目前github上有一些个人维护的php7版本, 但是完成的质量都不高,存在各种坑,很不幸我们踩了一个: 内存泄漏内存泄漏test环境之前安装的版本: http
2017-03-03 18:21:22
974
原创 PHP内核原理(三)zval类型转换和操作
PHP内核原理 Zvals类型转换及操作基本操作由于zvals是一个复杂的结构体,所以你不能直接对其进行操作如:zv1 + zv2。即使最为简单的操作如+对于zvals来说也是极为复杂的,因为你必须适应不同的类型, 比如:php允许你对double类型与string类型相加(3.14 + ‘17’), 甚至允许你
2017-02-23 20:46:48
1547
原创 PHP内核原理(二)内存管理
PHP内核原理 Zvals内存管理zval结构有两个功能:第一,用于存储一个变量的值以及变量类型。第二,有效的管理内存中的zval变量的值,本章将会介绍这个功能。接下来我们看一下引用计数和copy-on-write 这两个概念,以及在扩展中如何应用。值和引用在php中所有的变量都是值传递,除非你显示的指明引用传递。即任何时刻你传递一个变量给个函数或者给另外一个变量赋值,你得到的两个变量都会拥有一份独
2017-02-21 19:54:35
526
原创 PHP内核原理(一)Zvals基本结构
Zvals 基本结构php内核中使用zval表示一个php变量。一个zval(zend value 的简写)结构可以表示一个任意的php变量,这是整个php内核中最重要的数据结构,本章将会介绍zval的基本概念以及如何使用。Types and values每个zval中存储了一个变量的值以及变量的类型。 这点非常必要,因为php是一个动态类型的语言,变量的类型是在运行阶段确定的,而不是编译阶段。另外
2017-02-21 19:52:58
899
原创 PHP Internals Book PHP内核原理
PHP Internals Book PHP内核原理本文部分翻译自PHP Internals Book, 部分章节源于自己平时的总结。一来作为自己的读书笔记;二来,翻译出来方便对扩展开发有兴趣的同学一起学习。时间关系预计一周左右更新一节。欢迎讨论。目录Zvalszval基本结构内存管理Hashtables
2017-02-21 19:49:10
983
原创 PHP扩展开发学习资料汇总
PHP扩展开发资料汇总, 在学习扩展开发的过程中,发现了很多有用的资料,在此与大家分享 Sara Golemon 大神写的Extending and Embedding PHPGeorge Schlossnagle 写的Advanced PHP ProgrammingBlake Schwendiman所著Building Custom PHP Extensions鸟哥的博客
2017-02-21 17:47:54
490
原创 Active Record 设计模式原理及简单实现
Active Record 设计模式原理及简单实现概述本文简要介绍Active Record 设计模式。Active Record 是一种数据访问设计模式,它可以帮助你实现数据对象Object到关系数据库的映射。应用Active Record 时,每一个类的实例对象唯一对应一个数据库表的一行(一对一关系)。你只需继承一个abstract Active Record 类就可以使用该设计模
2017-02-10 10:49:22
14482
1
转载 mmap详解
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式, 因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域
2017-02-04 11:41:00
292
原创 PHP VLD扩展查看opcode
转自:http://www.phppan.com/ VLD(Vulcan Logic Dumper)是一个在Zend引擎中,以挂钩的方式实现的用于输出PHP脚本生成的中间代码(执行单元)的扩展。 它可以在一定程序上查看Zend引擎内部的一些实现原理,是我们学习PHP源码的必备良器。它的作者是Derick Rethans, 除了VLD扩展,我们常用的XDebug扩展的也有该牛人的身影。
2017-01-25 10:49:50
402
原创 PHP变量加1的几种方式对比
PHP 变量加1的几种方式天下武功唯快不破,同一个功能往往都有多种实现方式,那么对于强迫症患者,追求完美的程序原来说,那种方式才是最快的呢, 他们的区别又是什么呢?下面会探究下几个典型的例子。$i = $i + 1 <?php $i = 0; $i = $i + 1; echo $i;利用vld 扩展打印opcode如下所以$i = $i + 1 执行过程是,将$i ,
2017-01-24 15:39:11
5198
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人