同台服务器使用缓存APC效率高于Memcached的演示代码


Posted in PHP onFebruary 16, 2010
<?php 
$memcachehost = 'localhost'; 
$memcacheport = '11211'; 
function microtime_float(){ 
list($usec, $sec) = explode(" ", microtime()); 
return ((float)$usec + (float)$sec); 
} 
function runtime($t1){ 
return number_format((microtime_float() - $t1)*1000, 4).'ms'; 
} 
$starttime = microtime_float(); 
$cache_time = '30'; 
echo "init=====".runtime($starttime).'<br>'; $sql = "SELECT * FROM hx WHERE id = 10006"; 
$mem_sql_key = md5($sql); 
$t1 = microtime_float(); 
echo "APC_read====="; 
$arrs = apc_fetch($mem_sql_key); 
echo runtime($t1).'<br>'; 
$t1 = microtime_float(); 
apc_store($mem_sql_key.'_test', $arrs, $cache_time); 
echo "APC_write====="; 
echo runtime($t1).'<br>'; 
$t1 = microtime_float(); 
$mem = new Memcache; 
$mem->connect($memcachehost, $memcacheport); 
echo "MEM_connet=====".runtime($t1).'<br>'; 
$t1 = microtime_float(); 
$arrs = $mem->get($mem_sql_key); 
echo "MEM_read====="; 
echo runtime($t1).'<br>'; 
$t1 = microtime_float(); 
$mem->set($mem_sql_key.'_test',$arrs,0,$cache_time); 
echo "MEM_write====="; 
echo runtime($t1).'<br>'; 
?>

预先把这句SQL的结果在apc和memcached中都缓存了,然后测试读写速度。
在本机windows上结果:
init=====0.0341ms
APC_read=====0.0439ms
APC_write=====0.0920ms
MEM_connet=====11.0571ms
MEM_read=====0.2630ms
MEM_write=====0.2270ms

在服务器上linux上结果:
init=====0.0131ms
APC_read=====0.0520ms
APC_write=====0.0489ms
MEM_connet=====0.0501ms
MEM_read=====0.1030ms
MEM_write=====0.0801ms

当然反复刷新会有不同的值,这里只是取了一个较平均的值。
win下的不具备什么参考性,主要看linux上的结果。
不算connent时间,大概读写的速度apc都比memcached快上一倍左右。算上memcache_connect的时间,也就是快二倍。
APC即可以实现php文件的opcode缓存,也可以实现user cache,实在是个好东西。

所以,如果当网站规模还小的时候,所有功能可以在一台服务器上完成时,那么缓存的方案首选应该就是APC,不用考虑memcached。但如果考虑到网站规模会不断扩大,这点时间的性能差异其实可以忽略不计的,就应该部署memcached了。
另外,跨服务器使用memcached,最好要使用内网。不然的话,受路由的影响,memcached经常会连接超时(超过100ms),而且会凭空多出来两倍的宽带流量。

PHP 相关文章推荐
PHP Squid中可缓存的动态网页设计
Sep 17 PHP
array_multisort实现PHP多维数组排序示例讲解
Jan 04 PHP
php快递单号查询接口使用示例
May 05 PHP
php防止站外远程提交表单的方法
Oct 20 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
php动态绑定变量的用法
Jun 16 PHP
Codeigniter的dom类用法实例
Jun 26 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
Dec 22 PHP
Composer设置忽略版本匹配的方法
Apr 27 PHP
PHP实现微信小程序用户授权的工具类示例
Mar 05 PHP
php依赖注入知识点详解
Sep 23 PHP
PhpSpreadsheet设置单元格常用操作汇总
Nov 13 PHP
用PHP ob_start()控制浏览器cache、生成html实现代码
Feb 16 #PHP
PHP IPV6正则表达式验证代码
Feb 16 #PHP
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
Feb 16 #PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 #PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
Feb 16 #PHP
一步一步学习PHP(6) 面向对象
Feb 16 #PHP
一步一步学习PHP(5) 类和对象
Feb 16 #PHP
You might like
php中函数的形参与实参的问题说明
2010/09/01 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
thinkPHP5框架分页样式类完整示例
2018/09/01 PHP
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
JsRender for object语法简介
2014/10/31 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
JQuery实现左右滚动菜单特效
2015/09/28 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2018/08/22 Python
python 图片去噪的方法示例
2019/07/09 Python
Django Celery异步任务队列的实现
2019/07/24 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
Python基于locals返回作用域字典
2020/10/17 Python
Booking.com英国官网:全球酒店在线预订网站
2018/04/21 全球购物
WiFi云数码相框:Nixplay
2018/07/05 全球购物
英国最大的在线时尚眼镜店:Eyewearbrands
2019/03/12 全球购物
益模软件Java笔试题
2012/03/27 面试题
亲子阅读的活动方案
2014/08/15 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
学院党委班子四风问题自查报告及整改措施
2014/10/25 职场文书
高中运动会广播稿
2015/08/19 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
一文带你探究MySQL中的NULL
2021/11/11 MySQL