同台服务器使用缓存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 相关文章推荐
默默简单的写了一个模板引擎
Jan 02 PHP
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
Mar 29 PHP
php str_pad 函数使用详解
Jan 13 PHP
c#中的实现php中的preg_replace
Dec 21 PHP
php无限遍历文件夹示例分享
Mar 04 PHP
PHPUnit安装及使用示例
Oct 29 PHP
Yii2下session跨域名共存的解决方案
Feb 04 PHP
PHP面相对象中的重载与重写
Feb 13 PHP
PHP编程获取各个时间段具体时间的方法
May 26 PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 PHP
PhpStorm配置Xdebug调试的方法步骤
Feb 02 PHP
PHP xpath()函数讲解
Feb 11 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
CI框架文件上传类及图像处理类用法分析
2016/05/18 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
通过正则表达式实现表单验证是否为中文
2014/02/18 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
js布局实现单选按钮控件
2020/01/17 Javascript
python实现壁纸批量下载代码实例
2018/01/25 Python
python 剪切移动文件的实现代码
2018/08/02 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
Python函数装饰器实现方法详解
2018/12/22 Python
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
python操作cfg配置文件方式
2019/12/22 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
开工仪式主持词
2014/03/20 职场文书
村党支部书记承诺书
2014/05/29 职场文书
出生医学证明书
2014/09/15 职场文书
党员转正介绍人意见
2015/06/03 职场文书
运动会报道稿大全
2015/07/23 职场文书
2016入党积极分子心得体会
2016/01/06 职场文书
《法国号》教学反思
2016/02/22 职场文书
八年级语文教学反思
2016/03/03 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis
详解Python中的for循环
2022/04/30 Python