码迷,mamicode.com
首页 > 系统相关 > 详细

话说zendopcache与apc

时间:2016-08-31 15:53:28      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:话说zendopcache与apc

apc和zendopcache什么区别
http://www.laruence.com/2013/03/18/2846.html

点击(此处)折叠或打开

  1. 在以前, 很多人都会选择使用APC, APC除了提供Opcode Cache以外, 还会提供一套User Data Cache(apc_store/apc_fetch), 所以对于很多有需求使用User Data Cache的同学, 使用APC, 就没什么问题.


  2. 然而, 最近Zend Optimizer Plus开源了, 测试表明, Zend O+在Opcode Cache方面, 因为做了Opcode Cache优化, 所以会比APC要高效, 再后来, PHP5.5已经把Zend O+作为了源代码的一部分. 会随着PHP一起发布.


  3. 这就有了个问题, 对于那些既要使用Zend O+的Opcode Cache, 又要使用APC的User Data Cache的同学, 怎么办呢?


  4. 开始的时候, 我只是给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

点击(此处)折叠或打开

  1. opcode是计算机指令中的一部分,用于指定要执行的操作, 指令的格式和规范由处理器的指令规范指定。 除了指令本身以外通常还有指令所需要的操作数,可能有的指令不需要显式的操作数。 这些操作数可能是寄存器中的值,堆栈中的值,某块内存的值或者IO端口中的值等等。


  2. 通常opcode还有另一种称谓:字节码(byte codes)。 例如Java虚拟机(JVM),.NET的通用中间语言(CIL: Common Intermeditate Language)等等。


  3. 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了


本文出自 “半城烟沙” 博客,请务必保留此出处http://vabc1314.blog.51cto.com/2164199/1844762

话说zendopcache与apc

标签:话说zendopcache与apc

原文地址:http://vabc1314.blog.51cto.com/2164199/1844762

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!