同台服务器使用缓存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 相关文章推荐
常用表单验证类,有了这个,一般的验证就都齐了。
Dec 06 PHP
php面向对象全攻略 (八)重载新的方法
Sep 30 PHP
php strcmp使用说明
Apr 22 PHP
PHP 缓存实现代码及详细注释
May 16 PHP
Joomla下利用configuration.php存储简单数据
May 19 PHP
PHP也能干大事之PHP中的编码解码详解
Apr 20 PHP
PHP直接修改表内容DataGrid功能实现代码
Sep 24 PHP
php实现爬取和分析知乎用户数据
Jan 26 PHP
Zend Framework动作助手Redirector用法实例详解
Mar 05 PHP
既简单又安全的PHP验证码 附调用方法
Jun 02 PHP
PHP远程连接oracle数据库操作实现方法图文详解
Apr 11 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 04 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单件模式结合命令链模式使用说明
2008/09/07 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
PHP缓冲区用法总结
2016/02/14 PHP
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
2013/08/02 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
js的2种继承方式详解
2014/03/04 Javascript
node+express+ejs制作简单页面上手指南
2014/11/26 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
JavaScript中使用concat()方法拼接字符串的教程
2015/06/06 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
2019/04/12 Javascript
微信小程序与公众号卡券/会员打通的问题
2019/07/25 Javascript
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
Python爬虫的两套解析方法和四种爬虫实现过程
2018/07/20 Python
python实现多人聊天室
2020/03/31 Python
python requests 库请求带有文件参数的接口实例
2019/01/03 Python
Django model select的多种用法详解
2019/07/16 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
高三语文教学反思
2014/01/15 职场文书
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python
浅析Python中的套接字编程
2021/06/22 Python
Java8中Stream的一些神操作
2021/11/02 Java/Android
Python实现批量自动整理文件
2022/03/16 Python