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 plaincopy
  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 plaincopy
  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操作

php apc缓存以及与redis的对比相关推荐

  1. Apc缓存Opcode

    1.PHP执行 PHP的运行阶段也分成三个阶段: Parse.语法分析阶段. Compile.编译产出opcode中间码. Execute.运行,动态运行进行输出.                   ...

  2. 缓存数据库面试 - redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?

    缓存数据库面试 - redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发? 面试题 redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis ...

  3. 什么是缓存? 如何测试缓存? 以Redis为例

    什么是缓存? 通俗来讲,缓存就是提前准备好的数据,存储在内存中,方便应用快速访问.比如一个固定的查询请求,没缓存的话,查询语句会直接打到数据库上,请求数不多的时候,没有什么影响,但是当并发请求很多时, ...

  4. springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis

    本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...

  5. 4 种数据库缓存最终一致性的优缺点对比?最终选择方案四!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 叶不闻 jjuejin.im/post/5d5c99b66fb9a ...

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

    1.Session: 修改.evn文件: SESSION_DRIVER:redis (如果还不行的话,修改config/session.php的driver) 2.缓存修改为redis 注意:使用 L ...

  7. Redis-20Spring缓存机制整合Redis

    文章目录 概述 Redis 和数据库读 Redis和数据库写 使用 Spring 缓存机制整合 Redis 工程结构 pom.xml DB Script & Redis Address POJ ...

  8. java缓存_使用Redis和Java进行数据库缓存

    数据库缓存是处理这些性能问题的最常见策略之一.缓存涉及将数据库查询的结果保存在更快,更容易访问的位置.正确完成后,缓存将减少查询响应时间,减少数据库负载并降低成本. 但是,缓存也需要小心处理,因为它们 ...

  9. 【重难点】【Redis 03】缓存雪崩、缓存穿透、缓存击穿、Redis 的内存过期策略、并发读写和双写

    [重难点][Redis 03]缓存雪崩.缓存穿透.缓存击穿.Redis 的内存过期策略.并发读写和双写 文章目录 [重难点][Redis 03]缓存雪崩.缓存穿透.缓存击穿.Redis 的内存过期策略 ...

最新文章

  1. 【Qt】Q_PROPERTY():属性系统
  2. 范凯:一个二次创业者的失败
  3. jdbcdslog hibernate sql log
  4. 智能合约重构社会契约(12)天秤币
  5. [OS复习]操作系统综述2
  6. 随时间的反向传播算法 BPTT
  7. ppp在linux下的编译和安装
  8. MySQL基本指令汇总
  9. MapReduce高级编程2
  10. python安装目录结构_1.5 python安装目录介绍《Python基础开发入门到精通》
  11. Firefox国际版与国内版
  12. html实现点击下载文件
  13. 回环口--Loopback接口
  14. ASimpleCache开源缓存框架使用之实现抽签小程序
  15. 读知乎《美国为什么不能通过印制美元来偿还中国购买的美国国债?》有感
  16. 关于向上转型和向下转型
  17. 计算机辅助制图CAC,cac-
  18. 用Python实现跳一跳自动跳跃
  19. jmeter+influxdb2+grafana的安装与使用
  20. 2021年1月编程语言排行榜:Python年度编程语言

热门文章

  1. php fastdfs扩展,php如何安装fastdfs扩展
  2. lamp 配置mysql_LAMP安装配置超详细讲解
  3. 计算机理论python字符串作业_[Python基础 ] Day_07_作业参考答案
  4. jpa分页查询_如何来实现SpringBoot应用的JPA数据持久化和热插拔
  5. java中jscrollpane_java中JScrollPane问题
  6. 使用redux和axios获取api数据
  7. 附件下载原来如此简单
  8. 四种依恋类型_【工具】成人依恋量类型介绍
  9. java 短链接url_Java 网址短链接服务原理及解决方案
  10. 2学习率调整_Keras的Adam优化器参数理解及自适应学习率