同台服务器使用缓存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 相关文章推荐
dede3.1分页文字采集过滤规则详说(图文教程)续四
Apr 03 PHP
基于PHP对XML的操作详解
Jun 07 PHP
PHP删除数组中空值的方法介绍
Apr 14 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
Oct 30 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
Jun 10 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
PHP常用文件操作函数和简单实例分析
Jun 03 PHP
PHP is_array() 检测变量是否是数组的实现方法
Jun 13 PHP
老生常谈PHP中的数据结构:DS扩展
Jul 17 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
YII框架常用技巧总结
Apr 27 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
使用swoole扩展php websocket示例
2014/02/13 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
toString()一个会自动调用的方法
2010/02/08 Javascript
javascript闭包的理解和实例
2010/08/12 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
jQuery实现鼠标划过展示大图的方法
2015/03/09 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
详解vue 中 scoped 样式作用域的规则
2020/09/14 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
Python使用三种方法实现PCA算法
2017/12/12 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
使用Python监视指定目录下文件变更的方法
2018/10/15 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
python遍历文件目录、批量处理同类文件
2019/08/31 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
python模块内置属性概念及实例
2021/02/18 Python
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
校长岗位职责
2013/11/26 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
捐款通知怎么写
2015/04/24 职场文书
小学生表扬稿范文
2015/05/05 职场文书
《法国号》教学反思
2016/02/22 职场文书
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python