同台服务器使用缓存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静态新闻列表自动生成代码
Jun 14 PHP
Ajax PHP简单入门教程代码
Apr 25 PHP
php SQL防注入代码集合
Apr 25 PHP
PHP 实现多服务器共享 SESSION 数据
Aug 15 PHP
openflashchart 2.0 简单案例php版
May 21 PHP
分享一个PHP数据流应用的简单例子
Jun 01 PHP
php中将字符串转为HTML的实体引用的一个类
Feb 03 PHP
ThinkPHP中的系统常量和预定义常量集合
Jul 01 PHP
thinkPHP3.2简单实现文件上传的方法
May 16 PHP
PHP中Array相关函数简介
Jul 03 PHP
PHP实现15位身份证号转18位的方法分析
Oct 16 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
Feb 10 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框架Phpbean说明
2008/01/10 PHP
php magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
全世界最小的php网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
php设计模式 Decorator(装饰模式)
2011/06/26 PHP
php中判断字符串是否全是中文或含有中文的实现代码
2011/09/16 PHP
php中一个有意思的日期逻辑处理
2012/03/25 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
php实现小程序支付完整版
2018/10/09 PHP
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
jQuery中:text选择器用法实例
2015/01/03 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
JavaScript基于对象去除数组重复项的方法
2016/10/09 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
Vue学习之路之登录注册实例代码
2017/07/06 Javascript
javascript标准库(js的标准内置对象)总结
2018/05/26 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
Vue代码整洁之去重方法整理
2019/08/06 Javascript
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
Django Highcharts制作图表
2016/08/27 Python
详解python算法之冒泡排序
2019/03/05 Python
树莓派与PC端在局域网内运用python实现即时通讯
2019/06/22 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
python 操作hive pyhs2方式
2019/12/21 Python
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
俄罗斯女装店:12storeez
2019/10/25 全球购物
链表面试题-一个链表的结点结构
2015/05/04 面试题
护士的自我鉴定
2014/02/07 职场文书
美术课外活动总结
2014/07/08 职场文书
同学会邀请函模板
2015/01/30 职场文书
八年级作文之感恩
2019/11/22 职场文书
MongoDB 常用的crud操作语句
2021/06/20 MongoDB