关于APC(Alternative PHP Cache)和MemCache

转载 2012年03月29日 15:33:06

http://slj.me/2009/04/apcalternative-php-cache-memcache/



APC(Alternative PHP Cache)
APC是一种对PHP有效的开放源高速缓冲储存器工具,它能够缓存opcode的php中间码。APC是一种php的缓存解决方案,目前以pecl方式发布,有消息说将会出现在php6版本的内核.

一.安装方法

1)从http://pecl.php.net/package/apc下载相应版本
2)解压
3)进入源码目录
4)执行php安装目录下的bin/phpize
5)./configure –enable-apc –enable-apc-mmap –with-apxs=path-to-apache/bin/apxs –with-php-config=path-to-php/bin/php-config
6)make && make install
7)将生成的apc.so加载到php.ini(extesion=apc.so,注意extension_dir的设置)一般地,编译生成的.so会在php安装路径的lib/php/extensions下
8)重启,apache

写一个phpinfo看看

注:windows下,只要到http://snaps.php.net/的相应分支下下载php_apc.dll,再在php.ini中加载即可

060925175835

二.用法

apc的用法比较简单,只有几个函数,列举如下
apc_clear_cache() 清除apc缓存内容
默认(无参数)时,只清除系统缓存,要清除用户缓存,需用’user’参数
apc_define_constants ( string key, array constants [, bool case_sensitive] )
将数组constants以常量加入缓存
apc_load_constants (string Key)
取出常量缓存
apc_store ( string key, mixed var [, int ttl] )
在缓存中保存数据
apc_fetch ( string key )
获得apc_store保存的缓存内
容apc_delete ( string key )
删除apc_store保存的内容

完整例子如下(PHP代码):

  1. //apc test  
  2. //constants  
  3. $constants = array('APC_FILE' => 'apc.php''AUTHOR' => 'tim');  
  4. apc_define_constants('numbers'$constants);  
  5. apc_load_constants('numbers');  
  6. echo 'APC_FILE='.APC_FILE.' 
  7. ';  
  8. echo 'AUTHOR='.AUTHOR.' 
  9. ';  
  10.   
  11. //variable  
  12. if(!apc_fetch('time1')) apc_store('time1', time());  
  13. if(!apc_fetch('time2')) apc_store('time2', time(),2); //set ttl  
  14. echo 'time1:'.apc_fetch('time1').' 
  15. ';  
  16. echo 'time2:'.apc_fetch('time2').' 
  17. ';  
  18.   
  19. //object  
  20. class a{  
  21. function b(){return 'i am b in class a';}  
  22. }  
  23. apc_store('obj',new a());  
  24. $a = apc_fetch('obj');  
  25. echo $a->b();  
  26. echo ' 
  27. ';  
  28. //array  
  29. $arr = array('a'=>'i am a','b'=>'i am b');  
  30. apc_store('arr',$arr);  
  31. $apc_arr = apc_fetch('arr');  
  32. print_r($apc_arr);  

提示:你可以刷新一下,看ttl设置是否生效
在 PHP Cache 层,Facebook 采用了 APC

参考资料:http://hi.baidu.com/flyhart/blog/item/25280a4c3b90d6ffd62afc12.html

再说说MemCache

一、概念
 memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。起初作者编写它可能是为了提高动态网页应用,为了减轻数据库检索的压力,来做的这个缓存系统。它的缓存是一种分布式的,也就是可以允许不同主机上的多个用户同时访问这个缓存系统, 这种方法不仅解决了共享内存只能是单机的弊端,同时也解决了数据库检索的压力,最大的优点是提高了访问获取数据的速度!基于memcache作者对分布式cache的理解和解决方案。 memcache完全可以用到其他地方 比如分布式数据库, 分布式计算等领域。

二、Memcache在中型网站的使用
  使用Memcache的网站一般流量都是比较大的,为了缓解数据库的压力,让Memcache作为一个缓存区域,把部分信息保存在内存中,在前端能够迅速的进行存取。那么一般的焦点就是集中在如何分担数据库压力和进行分布式,毕竟单台Memcache的内存容量的有限的。我这里简单提出我的个人看法,未经实践,权当参考。
  [ 分布式应用]
  Memcache本来支持分布式,我们客户端稍加改造,更好的支持。我们的key可以适当进行有规律的封装,比如以user为主的网站来说,每个用户都有User ID,那么可以按照固定的ID来进行提取和存取,比如1开头的用户保存在第一台Memcache服务器上,以2开头的用户的数据保存在第二胎Mecache服务器上,存取数据都先按照User ID来进行相应的转换和存取。
  但是这个有缺点,就是需要对User ID进行判断,如果业务不一致,或者其他类型的应用,可能不是那么合适,那么可以根据自己的实际业务来进行考虑,或者去想更合适的方法。
  [ 减少数据库压力]
  这个算是比较重要的,所有的数据基本上都是保存在数据库当中的,每次频繁的存取数据库,导致数据库性能极具下降,无法同时服务更多的用户,比如MySQL,特别频繁的锁表,那么让Memcache来分担数据库的压力吧。我们需要一种改动比较小,并且能够不会大规模改变前端的方式来进行改变目前的架构。

参考资料:http://baike.baidu.com/view/1193094.htm


PHP中eAccelerator、memcached、xcache、APC 4个加速、缓存扩展的区别

这篇文章主要介绍了PHP中eAccelerator、memcached、xcache、APC等4个加速、缓存扩展的区别和选用建议,需要的朋友可以参考下   折腾VPS的朋友,在安装好LNMP等Web运...
  • zqtsx
  • zqtsx
  • 2014年11月05日 15:48
  • 3017

php中Apc和memcache缓存数据性能对比

由于是在项目基础上测试, 不方便贴出测试代码, 见谅.如果对测试结果不认同, 请提供测试方法及数据, 互相学习. 论坛讨论, 再实验, 得出结果:apc.user_entries_hint这个配置用来...
  • zqtsx
  • zqtsx
  • 2014年11月05日 15:49
  • 1396

安装 APC(Alternative PHP Cache) 提升 PHP 的解析速度

本文引用《高性能 PHP 开发》来做下记录 无论从命令行还是从 Web 服务器上执行 PHP 脚本时,PHP 必须执行所需的5个步骤。 Zend 引擎必须从文件系统中读取该文件、扫描其词典和表达式、解...
  • liruxing1715
  • liruxing1715
  • 2015年01月07日 16:44
  • 2145

php apc缓存以及与redis的对比

APC简介 APC的全称为Alternative PHP Cache, 是一款开源的php插件,用来对php的代码或者用户数据进行缓存。 APC 对php代码的缓存 apc可以去...
  • w18704622664
  • w18704622664
  • 2015年07月29日 18:31
  • 3177

PHP之APC缓存详细介绍(转)

1、APC缓存简介 APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”。它为我们提供了缓存和优化PHP的中间代码的框架。 APC的缓存分两部分:系统缓存和用户数据缓...
  • andy1219111
  • andy1219111
  • 2013年10月10日 17:39
  • 5045

使用APC加速PHP

原文地址:http://devzone.zend.com/1812/using-apc-with-php/ Cache Cow 缓存牛(原文Cache Cow,醉了,第一个词就不知道几个意思,只能...
  • agangdi
  • agangdi
  • 2014年10月29日 19:57
  • 13415

PHP之APC缓存详细介绍(学习整理)

1、APC缓存简介 APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”。它为我们提供了缓存和优化PHP的中间代码的框架。 APC的缓存分两部分:系统缓存和用户数据...
  • wang78699425
  • wang78699425
  • 2014年12月16日 19:01
  • 1203

php的apc扩展浅析(四)

在介绍“System Cache Entries”和“User Cache Entries”页面之前,先回顾下(一)中提到了设置账号和密码,这个账号密码有什么用呢?其实就是用于这两个页面的,当我们没有...
  • a7442358
  • a7442358
  • 2015年09月18日 14:45
  • 596

使用APC加速PHP

原文地址:http://devzone.zend.com/1812/using-apc-with-php/ 注:打红色的地方是拿不准的地方,读者有懂的可以随便赐教 Cache Cow 缓存牛(原...
  • a595364628
  • a595364628
  • 2017年02月21日 14:46
  • 603

zendopcache与apc同时使用

以前看优化php的时候知道是怎么弄的,时间一长了又忘记apc和opcache什么关系了 后来自己也忘记为什么要同时这两个一起用了。。 今天想起来了又翻了出来 apc和zendopcache什...
  • TongWaccs
  • TongWaccs
  • 2016年08月11日 11:58
  • 599
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于APC(Alternative PHP Cache)和MemCache
举报原因:
原因补充:

(最多只允许输入30个字)