apc缓存用户数据这个会用, apc_store() 和apc_fetch()函数。
原文: 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- 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的命中。如下图
APC的配置
配置的例子如下:
[PHP] view plain copy
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。