话说zendopcache与apc
2016-08-31 14:56
267 查看
apc和zendopcache什么区别 http://www.laruence.com/2013/03/18/2846.html
点击(此处)折叠或打开在以前, 很多人都会选择使用APC, APC除了提供Opcode Cache以外, 还会提供一套User Data Cache(apc_store/apc_fetch), 所以对于很多有需求使用User Data Cache的同学, 使用APC, 就没什么问题.
然而, 最近Zend Optimizer Plus开源了, 测试表明, Zend O+在Opcode Cache方面, 因为做了Opcode Cache优化, 所以会比APC要高效, 再后来, PHP5.5已经把Zend O+作为了源代码的一部分. 会随着PHP一起发布.
这就有了个问题, 对于那些既要使用Zend O+的Opcode Cache, 又要使用APC的User Data Cache的同学, 怎么办呢?
开始的时候, 我只是给APC增加了一个开关apc.opcode_cache_enable, 这样一来, 用户就可以使用APC然而关闭opcode cache来达到这个目的, 但是APC的User Data Cache使用的存储机制是和Opcode Cache一样的, 这样的场景要求数据严格正确, 所以锁会比较多, 测试表明, APC的User Data Cache的效率和本地memcached几乎相当.
什么是opcode http://www.nowamagic.net/librarys/veda/detail/1325
点击(此处)折叠或打开opcode是计算机指令中的一部分,用于指定要执行的操作, 指令的格式和规范由处理器的指令规范指定。 除了指令本身以外通常还有指令所需要的操作数,可能有的指令不需要显式的操作数。 这些操作数可能是寄存器中的值,堆栈中的值,某块内存的值或者IO端口中的值等等。
通常opcode还有另一种称谓:字节码(byte codes)。 例如Java虚拟机(JVM),.NET的通用中间语言(CIL: Common Intermeditate Language)等等。
PHP中的opcode则属于前面介绍中的后着,PHP是构建在Zend虚拟机(Zend VM)之上的。PHP的opcode就是Zend虚拟机中的指令。
简单来说
apc和zendopcache都能做opcode cache,但是zendopcache的效率比apc高,所以能用zendopcache做opcode cache就用zendopcache
但是apc提供额外的User Data Cache,而zendopcache不提供,为了这两个一起用不冲突,关闭掉apc的opcode cache功能就能一起用了
所以apc里设置apc.enable_opcode_cache=0就能和zendopcache一起用了
这个User Data Cache又是啥呢,应该就是类似静态变量之类的吧因为PHP像有守护进程的JAVA之类的语言,没有真正的静态变量,当需要类型静态变量的时候,比如说游戏服务器ID,ip之类的很少更新的信息估计都能存这里面,免去反复读取数据库。
另外apc在5.5的时候已经去掉opcode cache功能并改名为apcu,意思是只提供user cache了,不过5.5还有能用apc的一个补丁过得版本。
在php5.6里需要直接用apcu了,没人在补丁apc给php5.6了
点击(此处)折叠或打开在以前, 很多人都会选择使用APC, APC除了提供Opcode Cache以外, 还会提供一套User Data Cache(apc_store/apc_fetch), 所以对于很多有需求使用User Data Cache的同学, 使用APC, 就没什么问题.
然而, 最近Zend Optimizer Plus开源了, 测试表明, Zend O+在Opcode Cache方面, 因为做了Opcode Cache优化, 所以会比APC要高效, 再后来, PHP5.5已经把Zend O+作为了源代码的一部分. 会随着PHP一起发布.
这就有了个问题, 对于那些既要使用Zend O+的Opcode Cache, 又要使用APC的User Data Cache的同学, 怎么办呢?
开始的时候, 我只是给APC增加了一个开关apc.opcode_cache_enable, 这样一来, 用户就可以使用APC然而关闭opcode cache来达到这个目的, 但是APC的User Data Cache使用的存储机制是和Opcode Cache一样的, 这样的场景要求数据严格正确, 所以锁会比较多, 测试表明, APC的User Data Cache的效率和本地memcached几乎相当.
什么是opcode http://www.nowamagic.net/librarys/veda/detail/1325
点击(此处)折叠或打开opcode是计算机指令中的一部分,用于指定要执行的操作, 指令的格式和规范由处理器的指令规范指定。 除了指令本身以外通常还有指令所需要的操作数,可能有的指令不需要显式的操作数。 这些操作数可能是寄存器中的值,堆栈中的值,某块内存的值或者IO端口中的值等等。
通常opcode还有另一种称谓:字节码(byte codes)。 例如Java虚拟机(JVM),.NET的通用中间语言(CIL: Common Intermeditate Language)等等。
PHP中的opcode则属于前面介绍中的后着,PHP是构建在Zend虚拟机(Zend VM)之上的。PHP的opcode就是Zend虚拟机中的指令。
简单来说
apc和zendopcache都能做opcode cache,但是zendopcache的效率比apc高,所以能用zendopcache做opcode cache就用zendopcache
但是apc提供额外的User Data Cache,而zendopcache不提供,为了这两个一起用不冲突,关闭掉apc的opcode cache功能就能一起用了
所以apc里设置apc.enable_opcode_cache=0就能和zendopcache一起用了
这个User Data Cache又是啥呢,应该就是类似静态变量之类的吧因为PHP像有守护进程的JAVA之类的语言,没有真正的静态变量,当需要类型静态变量的时候,比如说游戏服务器ID,ip之类的很少更新的信息估计都能存这里面,免去反复读取数据库。
另外apc在5.5的时候已经去掉opcode cache功能并改名为apcu,意思是只提供user cache了,不过5.5还有能用apc的一个补丁过得版本。
在php5.6里需要直接用apcu了,没人在补丁apc给php5.6了
相关文章推荐
- (转载)异步IO、APC、IO完成端口、线程池与高性能服务器 (五)
- 话说分派
- 话说机器人的“人来疯”现象!!!!
- 水果阿生话说王开源
- 话说这清风山离青州 水浒
- 话说这龙华寺和尚说 水浒
- php5.2 ajax+apc实现上传进度条 失败 经历
- 话说湖南男人
- 话说微软刚出的同步框架Sync Services (转)
- 话说状态模式和策略模式
- 话说软件测试中的“易用性”测试
- 内核模块编程之入门(一)---话说模块
- 《转》话说有中国特色的CCIE
- 话说MCDBA与Oracle
- Windows上安装APC
- 一句话说汽车(超搞笑)
- 话说3D
- 异步IO、APC、IO完成端口、线程池与高性能服务器之五 服务器的性能指标与实现高性能的途径
- 话说YUM安装服务器的搭建(ftp方式搭建)--以及客户端设置
- APC扩展模块