仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 867|回复: 7
打印 上一主题 下一主题

[学习教程] PHP网站制作之内存详解: 详解PHP内存池中的存储层

[复制链接]
变相怪杰 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:13:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
学习数据库了,MYSQL可算是PHP的黄金搭档了,不过,虽然话是这么说,你也可能恨不得把MYSQL给生吞活剥了,因为这一行一列的东东简直让自己头晕目眩。
PHP的内存办理器是分层(hierarchical)的。这个办理器共有三层:存储层(storage)、堆(heap)层和emalloc/efree层。存储层经由过程malloc()、mmap()等函数向体系真实的请求内存,并经由过程free()函数开释所请求的内存。
存储层一般请求的内存块都对照年夜,这里请求的内存年夜并非指storage层布局所必要的内存年夜,只是堆层经由过程挪用存储层的分派办法时,其以段的格式请求的内存对照年夜,存储层的感化是将内存分派的体例对堆层通明化。
起首看storage层的布局:
/*Heapswithuserdefinedstorage*/
typedefstruct_zend_mm_storagezend_mm_storage;

typedefstruct_zend_mm_segment{
size_tsize;
struct_zend_mm_segment*next_segment;
}zend_mm_segment;

typedefstruct_zend_mm_mem_handlers{
constchar*name;
zend_mm_storage*(*init)(void*params);//初始化函数
void(*dtor)(zend_mm_storage*storage);//析构函数
void(*compact)(zend_mm_storage*storage);
zend_mm_segment*(*_alloc)(zend_mm_storage*storage,size_tsize);//内存分派函数
zend_mm_segment*(*_realloc)(zend_mm_storage*storage,zend_mm_segment*ptr,size_tsize);//从头分派内存函数
void(*_free)(zend_mm_storage*storage,zend_mm_segment*ptr);//开释内存函数
}zend_mm_mem_handlers;

struct_zend_mm_storage{
constzend_mm_mem_handlers*handlers;//处置函数集
void*data;
};
内存的分派体例,挪用的函数是_zend_mm_storage布局中的处置函数集,而内存是以段的情势体现的。
4种内存计划
PHP在存储层共有4种内存分派计划:malloc,win32,mmap_anon,mmap_zero。默许利用malloc分派内存,假如设置了ZEND_WIN32宏,则为windows版本,挪用HeapAlloc分派内存,剩下两种内存计划为匿名内存映照,而且PHP的内存计划能够经由过程设置变量来修正。
官方申明以下:
TheZendMMcanbetweakedusingZEND_MM_MEM_TYPEandZEND_MM_SEG_SIZEenvironmentvariables.Defaultvaluesare“malloc”and“256K”.Dependentontargetsystemyoucanalsouse“mmap_anon”,“mmap_zero”and“win32″storagemanagers.
在代码中,关于这4种内存分派计划,分离对应完成了zend_mm_mem_handlers中的各个处置函数。共同代码的复杂申明以下:
/*利用mmap内存映照函数分派内存写进时拷贝的公有映照,而且匿名映照,映照区不与任何文件联系关系。*/
#defineZEND_MM_MEM_MMAP_ANON_DSC{"mmap_anon",zend_mm_mem_dummy_init,zend_mm_mem_dummy_dtor,zend_mm_mem_dummy_compact,zend_mm_mem_mmap_anon_alloc,zend_mm_mem_mmap_realloc,zend_mm_mem_mmap_free}本文链接http://www.cxybl.com/html/wlbc/Php/20130922/40142.html学习数据库了,MYSQL可算是PHP的黄金搭档了,不过,虽然话是这么说,你也可能恨不得把MYSQL给生吞活剥了,因为这一行一列的东东简直让自己头晕目眩。
山那边是海 该用户已被删除
沙发
发表于 2015-1-19 05:25:04 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-25 17:50:34 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
莫相离 该用户已被删除
地板
发表于 2015-2-3 12:19:43 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
飘飘悠悠 该用户已被删除
5#
发表于 2015-2-8 22:50:19 | 只看该作者
当然这种网站的会员费就几十块钱。
变相怪杰 该用户已被删除
6#
 楼主| 发表于 2015-2-26 13:55:14 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
活着的死人 该用户已被删除
7#
发表于 2015-3-8 15:31:11 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
小魔女 该用户已被删除
8#
发表于 2015-3-16 03:29:07 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 21:43

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表