php apc缓存以及与redis的对比

apc缓存用户数据这个会用, apc_store() 和apc_fetch()函数。

那apc 缓存php 代码,这个怎么用呢?

原文: http://blog.csdn.net/w18704622664/article/details/47132061#

------------------------------------------------------------------------------------------------

APC简介

APC的全称为Alternative PHP Cache, 是一款开源的php插件,用来对php的代码或者用户数据进行缓存。

APC 对php代码的缓存

apc可以去掉php动态解析以及编译的时间,php脚本可以执行的更快。下面这张图很好的说明了为什么了apc可以让php脚本运行得更快。

PHP是一个动态脚本语言,所以为了让用户在浏览器中看到页面内容,服务器必须解析php代码从而生成想用的html代码。从上面的图中可以看出,在没有apc的时候,用户对php页面的每一次请求,服务器都需要进行对php进行解析,编译以及执行,但是很多时候,只要php代码没有发生更改,php的执行逻辑就不会改变,也就是说解析以及编译的过程就可以省略,直接执行然后将结果返回即可。这就是apc的工作,apc缓存php的可执行代码,从而去掉了解析以及编译的过程,加快了php脚本的执行速度。

APC 对用户数据的缓存以及

除了缓存php代码外,apc还可以进行用户数据的缓存,但是由于apc的容量很少,所以缓存的数据最好是那些很长时间都不变的数据,不变的单位应该以天位单位。所以如果数据是变化很频繁的并且数据量也比较大,那么就不要使用apc了,可以使用memcache或者Redis

下面是一个apc和redis的对比测试实验,看一下apc和redis的效率对比。

[php] view plain copy

  1. function getTimeStamp() {
  2. $timestr = microtime();
  3. $timestrary = explode(‘ ‘, $timestr);
  4. $result = intval($timestrary[1])*1000 + intval(floatval($timestrary[0])*1000);
  5. return $result;
  6. }
  7. $redis = new Redis();
  8. $redis->connect(‘127.0.0.1‘, 6379);
  9. $key = ‘key‘;
  10. $value =‘value‘;
  11. $redis->set($key, $value);
  12. apc_store($key, $value, 1);
  13. $begin = getTimeStamp();
  14. for($i = 0 ; $i < 100000 ; $i = $i +1) {
  15. $result = apc_fetch($key);
  16. }
  17. $cost = getTimeStamp() - $begin;
  18. var_dump($cost);
  19. $begin = getTimeStamp();
  20. for($i = 0 ; $i < 100000 ; $i = $i +1) {
  21. $result = $redis->get($key);
  22. }
  23. $cost = getTimeStamp() - $begin;
  24. var_dump($cost);
  25. $redis->close();

都是简单的取数据操作,分别进行10万次,单位是毫秒。最后的运行结果redis10万次读在4-5秒之间,而apc得10万次读只有50毫秒左右。可以看到如果是简单的缓存一些数据,并且这些数据不会变化且命中的话,apc还是能带来一定的效率提升的。

安装apc时会有一个apc.php的页面可以通过这个页面查看apc的命中。如下图

APC的配置

配置的例子如下:

[php] view plain copy

    1. extension= apc.so
    2. apc.enabled=1
    3. apc.shm_segments=1
    4. apc.shm_size=64M ; apc内存的大小,最后的大小需要乘上segments的数量,所以这里一共为apc分配64M
    5. apc.ttl=7200
    6. apc.user_ttl=7200
    7. apc.enable_cli=1 ; 这个如果不开启,则只可以在网页上进行apc操作,不能通过cli进行apc操作
时间: 2024-11-09 04:20:19

php apc缓存以及与redis的对比的相关文章

Apc缓存Opcode(转)

1.PHP执行 PHP的运行阶段也分成三个阶段: Parse.语法分析阶段. Compile.编译产出opcode中间码. Execute.运行,动态运行进行输出. 由于PHP是个解释型语言执行的时候先得把程序读进来,然后由Zend引擎编译成opcode.最后Zend虚拟机顺次执行这些opcode(指令)完成操作.因此我们可 以把这个Opcode缓存起来,下次就能避免重新编译了. APC缓存作用如下: 2 .APC简介 Alternative PHP Cache (APC) 是一个开放自由的PH

PHP核心代码库中的APC缓存说明123

1.APC缓存简介APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”.它为我们提供了缓存和优化PHP的中间代码的框架. APC的缓存分两部分:系统缓存和用户数据缓存. 1.1系统缓存      它是指APC把PHP文件源码的编译结果缓存起来,然后在每次调用时先对比时间标记.如果未过期,则使用缓存的中间代码运行.默认缓存 3600s(一小时).但是这样仍会浪费大量CPU时间.因此可以在php.ini中设置system缓存为永不过期(apc.ttl=0).不过如果

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

From : http://www.2cto.com/kf/201210/160140.html 1.APC缓存简介APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”.它为我们提供了缓存和优化PHP的中间代码的框架. APC的缓存分两部分:系统缓存和用户数据缓存.系统缓存它是指APC把PHP文件源码的编译结果缓存起来,然后在每次调用时先对比时间标记.如果未过期,则使用缓存的中间代码运行.默认缓存 3600s(一小时).但是这样仍会浪费大量CPU时间.因此可以在

PHP APC缓存配置、使用详解

一.APC缓存简介 APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”.它为我们提供了缓存和优化PHP的中间代码的框架. APC的缓存分两部分:系统缓存和用户数据缓存. 系统缓存 它是指APC把PHP文件源码的编译结果缓存起来,然后在每次调用时先对比时间标记.如果未过期,则使用缓存的中间代码运行.默认缓存 3600s(一小时).但是这样仍会浪费大量CPU时间.因此可以在php.ini中设置system缓存为永不过期(apc.ttl=0).不过如果这样设置,改运

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

APC的介绍 The Alternative PHP Cache (APC) is a free and open opcode cache for PHP. Its goal is to provide a free, open, and robust framework for caching and optimizing PHP intermediate code. APC官方网站:http://www.php.net/manual/en/book.apc.php WIN下最新版本的下载地

【无私分享:ASP.NET CORE 项目实战(第十一章)】Asp.net Core 缓存 MemoryCache 和 Redis

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 经过 N 久反复的尝试,翻阅了网上无数的资料,GitHub上下载了十几个源码参考, Memory 和 Redis 终于写出一个 简陋 的 封装,为了统一和易用,我们两种缓存都统一实现了一个接口 ICacheService,微软也有很多是通过IDistributedCache,大家可以参考 https://docs.asp.net/en/latest/performance/caching/distributed.html 

Laravel之路——file缓存修改为redis缓存

1.Session: 修改.evn文件: SESSION_DRIVER:redis (如果还不行的话,修改config/session.php的driver) 2.缓存修改为redis 注意:使用 Laravel 的 Redis 缓存之前,你需要通过 Composer 安装 predis/predis 包(~1.0). 1.修改.evn文件中redis的配置信息

使用APC缓存PHP opcode

1.  关于版本 我的php版本是5.3.10  最开始使用 APC-3.1.8  编译成功,但是 php -m 得不到扩展 , 换成 APC-3.1.9  后解决. 2.  关于配置 apc.cache_by_default = 0 的时候 需要 filters 来匹配开启的文件  一般这两个是配套使用 apc.cache_by_default 默认启用缓存.1表示“启用”,0表示“禁用” apc.filters 根据逗号分隔的POSIX正则表达式判断文件需要缓存还是不需要缓存.以a+开头的正

PHP APC缓存

参见官方文档 http://php.net/manual/en/book.apc.php The Alternative PHP Cache (APC) is a free and open opcode cache for PHP. Its goal is to provide a free, open, and robust framework for caching and optimizing PHP intermediate code. 通过以下方式可以查看是否安装了APC扩展 $ p