关于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


相关文章推荐

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

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

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

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

Centos下mysql,apache,php安装详细步骤(redis+memcache+APC)

安装mysql 1: 安装好cmake 2:更新必要的库 yum install –y openssl openssl-devel ncurses ncurses-devel 3:添加m...

Memcache-eAccelerator-APC-Xcache-Redis五种php缓存加速器特点

一、说说Memcached优化方案Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库...

memcache_cache_handler.php

  • 2011年10月12日 23:44
  • 2KB
  • 下载

Drupal7缓存配置技巧apc、memcache、filecache

drupal6有个著名的cacherouter模块,能同时支持db、apc、memcache、file缓存,可以灵活配置各种缓存在不同地方,例如默认在apc、cache_page在file、sessi...

php5.3.3_APC扩展模块

  • 2016年08月02日 10:00
  • 42KB
  • 下载

php_apc.dll

  • 2008年10月30日 18:39
  • 64KB
  • 下载

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

1、APC缓存简介 APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”。它为我们提供了缓存和优化PHP的中间代码的框架。 APC的缓存分两部分:系统缓存和用户数据缓...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于APC(Alternative PHP Cache)和MemCache
举报原因:
原因补充:

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