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的效率对比。
- 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的配置
配置的例子如下:
- 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操作
php apc缓存以及与redis的对比的更多相关文章
- Apc缓存Opcode(转)
1.PHP执行 PHP的运行阶段也分成三个阶段: Parse.语法分析阶段. Compile.编译产出opcode中间码. Execute.运行,动态运行进行输出. ...
- PHP之APC缓存详细介绍(转)
1.APC缓存简介 APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”.它为我们提供了缓存和优化PHP的中间代码的框架. APC的缓存分两部分:系统缓存和用户数据缓 ...
- PHP核心代码库中的APC缓存说明123
1.APC缓存简介APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”.它为我们提供了缓存和优化PHP的中间代码的框架. APC的缓存分两部分:系统缓存和用户数据缓存 ...
- PHP之APC缓存详细介绍
1.APC缓存简介 APC,全称是Alternative PHP Cache,官方翻译叫"可选PHP缓存".它为我们提供了缓存和优化PHP的中间代码的框架. APC的缓存分两部分: ...
- PHP APC缓存配置、使用详解
一.APC缓存简介 APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”.它为我们提供了缓存和优化PHP的中间代码的框架. APC的缓存分两部分:系统缓存和用户数据缓 ...
- PHP之APC缓存详细介绍(学习整理)
APC的介绍 The Alternative PHP Cache (APC) is a free and open opcode cache for PHP. Its goal is to provi ...
- [转]PHP之APC缓存详细介绍(学习整理)
From : http://www.2cto.com/kf/201210/160140.html 1.APC缓存简介APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存 ...
- .NET 环境中使用RabbitMQ RabbitMQ与Redis队列对比 RabbitMQ入门与使用篇
.NET 环境中使用RabbitMQ 在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统时,这种分布式的调用与通信变得越发重要.其次,系统中一般会有很多对实时性要求不高的 ...
- Redis缓存穿透、缓存雪崩、redis并发问题 并发竞争key的解决方案 (阿里)
阿里的人问我 缓存雪崩(大量数据在同一时间过期了)了如何处理,缓存击穿了如何处理,回答的很烂,做了总结: 把redis作为缓存使用已经是司空见惯,但是使用redis后也可能会碰到一系列的问题,尤其是数 ...
随机推荐
- 在Azure Ubunt Server 14.04虚机中使用Deep-Visualization-Toolbox
参考网站 a) https://zhuanlan.zhihu.com/p/24833574?utm_source=tuicool&utm_medium=referral b) ht ...
- 利用eclipse调试JDK源码
先看效果图 综合网上各种教程,总结如下 新建 D:/jdk/src .D:/jdk/debug 目录 src存放源码 debug存放编译结果 将 %JAVA_HOME%/src.zip 解压到 D:/ ...
- D1-mini esp8266的资料备份
需要更新esp8266库 http://arduino.esp8266.com/stable/package_esp8266com_index.json 下载好即可.
- opencv总结
2018-02-2623:59:02 唉,这软件我很烦躁,今天又搞了好几遍,出错提示的时候总是出问题! 而且,无论什么错误,都是提示一堆乱码! 定义ROI区域有两种方法,第一种是使用cv:Rect.顾 ...
- 【C++】智能指针简述(一):智能指针的引入
智能指针是C++中一种利用RAII机制(后面解释),通过对象来管理指针的一种方式. 在C++中,动态开辟的内存需要我们自己去维护,在出函数作用域或程序异常退出之前,我们必须手动释放掉它,否则的话就会引 ...
- PHP——基本使用(二)
PHP与Apache Apache服务器在接受到客户端请求的时候,根据客户端所请求的文件的类型,然后去问模块能否处理此文件,php作为模块之一有可能可以处理此文件,处理之后将数据再返回给apache, ...
- C_动态库|静态库
动态库 动态链接库简称DLL,同时以.dll 为后缀,主要用于提供代码和数据 dll 并不是所有数据都能被访问到,必须要进行导出 动态链接库在内存中始终只保存了一份数据,起到了节约内存的作用 生成动态 ...
- 【原】thinkphp实现存储session至redis
Thinkphp\Library\Think\Session\Driver中新建redis缓存文件:Redis.class.php Thinkphp\Common\function.php 中 fun ...
- 什么是 C 和 C ++ 标准库?
简要介绍编写C/C ++应用程序的领域,标准库的作用以及它是如何在各种操作系统中实现的. 我已经接触C++一段时间了,一开始就让我感到疑惑的是其内部结构:我所使用的内核函数和类从何而来? 谁发明了它们 ...
- scrapy 按顺序抓取text内容
需求:获得如下li.clearfix 下的所有text,并且按顺序输出 1. x.css('div.reply-doc h4 a::text').extract(); 2. x.css('div.r ...