同台服务器使用缓存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 相关文章推荐
服务器端解压缩zip的脚本
Dec 22 PHP
php在线生成ico文件的代码
Oct 09 PHP
php a simple smtp class
Nov 26 PHP
php addslashes和mysql_real_escape_string
Jan 24 PHP
php定时计划任务的实现方法详解
Jun 06 PHP
PHP垃圾回收机制引用计数器概念分析
Jun 24 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
php递归创建目录的方法
Feb 02 PHP
PHP中子类重载父类的方法【parent::方法名】
May 06 PHP
PHP实现生成数据字典功能示例
May 24 PHP
PHP实现上传图片到数据库并显示输出的方法
May 31 PHP
WordPress多语言翻译插件 - WPML使用教程
Apr 01 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实现多张图片上传加水印技巧
2013/04/18 PHP
fetchAll()与mysql_fetch_array()的区别详解
2013/06/05 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
浅析javascript操作 cookie对象
2014/12/26 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
2016/11/04 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
vue2 全局变量的设置方法
2018/03/09 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
python正则表达式re之compile函数解析
2017/10/25 Python
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
Python hashlib模块实例使用详解
2019/12/24 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
html5设计原理(推荐收藏)
2014/05/17 HTML / CSS
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
一篇.NET面试题
2014/09/29 面试题
机械专业应届生求职信
2013/09/21 职场文书
法律进机关实施方案
2014/03/12 职场文书
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
社区健康教育实施方案
2014/03/18 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
解决python3安装pandas出错的问题
2021/05/20 Python
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang