php apc缓存 优缺点,php apc缓存以及与redis的对比

APC简介

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

APC 对php代码的缓存

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

0818b9ca8b590ca3270a3433284dd417.png

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

APC 对用户数据的缓存以及

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

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

function getTimeStamp() {

$timestr = microtime();

$timestrary = explode(' ', $timestr);

$result = intval($timestrary[1])*1000 + intval(floatval($timestrary[0])*1000);

return $result;

}

$redis = new Redis();

$redis->connect('127.0.0.1', 6379);

$key = 'key';

$value ='value';

$redis->set($key, $value);

apc_store($key, $value, 1);

$begin = getTimeStamp();

for($i = 0 ; $i < 100000 ; $i = $i +1) {

$result = apc_fetch($key);

}

$cost = getTimeStamp() - $begin;

var_dump($cost);

$begin = getTimeStamp();

for($i = 0 ; $i < 100000 ; $i = $i +1) {

$result = $redis->get($key);

}

$cost = getTimeStamp() - $begin;

var_dump($cost);

$redis->close();

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

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

0818b9ca8b590ca3270a3433284dd417.png

APC的配置

配置的例子如下:

extension= apc.so

apc.enabled=1

apc.shm_segments=1

apc.shm_size=64M ; apc内存的大小,最后的大小需要乘上segments的数量,所以这里一共为apc分配64M

apc.ttl=7200

apc.user_ttl=7200

apc.enable_cli=1 ; 这个如果不开启,则只可以在网页上进行apc操作,不能通过cli进行apc操作

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值