同台服务器使用缓存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中的超全局变量
Oct 09 PHP
聊天室php&amp;mysql(三)
Oct 09 PHP
一个简单实现多条件查询的例子
Oct 09 PHP
PHP中的cookie
Nov 26 PHP
实用函数3
Nov 08 PHP
解析php防止form重复提交的方法
Jul 01 PHP
php判断邮箱地址是否存在的方法
Feb 13 PHP
php实现的XML操作(读取)封装类完整实例
Feb 23 PHP
实例分析PHP中PHPMailer发邮件
Dec 13 PHP
php微信公众号开发之二级菜单
Oct 20 PHP
在laravel框架中使用model层的方法
Oct 08 PHP
laravel开发环境homestead搭建过程详解
Jul 03 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高自定义性安全验证码代码
2011/11/27 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
2018/10/08 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
2019/12/07 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
pygame游戏之旅 按钮上添加文字的方法
2018/11/21 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
int和Integer有什么区别
2013/05/25 面试题
顶岗实习计划书
2014/01/10 职场文书
高中美术教师事迹材料
2014/08/22 职场文书
租房协议书
2014/09/12 职场文书
初中体育课教学反思
2016/02/16 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书
AJAX学习笔记
2021/05/18 Javascript
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android