php内存缓存实现方法


Posted in PHP onJanuary 24, 2015

本文实例讲述了php内存缓存实现方法。分享给大家供大家参考。具体如下:

在php中缓存分为很多种类型如,内存缓存,文件缓存,页面缓存。本文要来讲述关于php中内存缓存的一些方法,这里我们将介绍Memcached缓存和php自带的APC缓存方法.

1.Memcached缓存。

memcached是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度,memcached 使用了“Key=>Value”方式组织数据,可以允许不同主机上的多个用户同时访问这个缓存系统,一般用于大型网站使用,memcached使用内存缓存数据,所以它是易失的,当服务器重启,或者memcached进程中止,数据便会丢失,所以 memcached不能用来持久保存数据.

用过php_memcache的人都会觉得 PHP内存缓存是一个很复杂的东西,其实不然memcached 是高效、快速的分布式内存对象缓存系统,主要用于加速 WEB 动态应用程序.

这里介绍memcached在WIN32下的配置及其使用.

一、PHP内存缓存的配置,WIN32环境

1、下载php_memcache.rar

解压压缩包:php_memcache.rar

php_memcache.rar压缩包里主包含的文件有:

/memcached-1.2.1-win32/memcached.exe

/php_memcache/php_memcache.dll

2、打开命令提示符,指向到memcached.exe所在路径,运行memcached.exe -d start。

3、将php_memcache.dll文件拷贝到PHP的动态文件库的文件夹下。

4、在php.ini文件中加入一行extension=php_memcache.dll。

5、重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!

例,代码如下:

<?php 

//包含 memcached 类文件 

require_once('memcached-client.php'); 

 

//选项设置 

$options = array( 

 'servers' => array('3water.com:11211'),//memcached 服务的地址、端口 

 'debug' => true,//是否打开debug 

 'compress_threshold' => 10240,//超过多少字节的数据时进行压缩 

 'persistant' => false//是否使用持久连接 

 ); 

 

//实例化memcached对象 

$memcached = new memcached($options); 

 

$sql = 'SELECT * FROM table1'; 

$key = md5($sql); 

 

//如果在memcached中没有缓存数据,把缓存数据写入memcached 

if(!($datas = $memcached->get($key))) 

{ 

 $conn = mysql_connect('localhost', 'hxsd', '123456'); 

 mysql_select_db('hxsd'); 

 $result = mysql_query($sql); 

 while($row = mysql_fetch_object($result)) 

 { 

  $datas[] = $row; 

 } 

 //将数据库中获取到的结果集数据保存到 memcached 中,以供下次访问时使用。 

 $memcached->add($key, $datas); 

} 

else 

{ 

 //直接使用memcached中的缓存数据$datas 

} 

?>

内存缓存二,APC、EC、Zend加速器的比较

一、APC

APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”,主页是 http://pecl.php.net/package/apc,php帮助手册页面: http://cn.php.net/apc

APC是个优化器,自安装之日起,就默默地在后台为您的PHP应用服务了.您的所有PHP代码会被缓存起来,针对php opcode.

另外,APC可提供一定的内存缓存功能.但是这个功能并不是十分完美,有报告说如果频繁使用APC缓存的写入功能,会导致不可预料的错误.如果想使用这个功能,可以看看apc_fetch,apc_store等几个与apc缓存相关的函数.

安装,代码如下:

# pecl install APC

配置:/etc/php.inc,代码如下:

extension=apc.so

[apc]

apc.enabled = 1 

apc.shm_segments = 1 

apc.shm_size = 30 

apc.optimization = 0 

apc.ttl = 7200 

apc.user_ttl = 7200 

apc.num_files_hint = 1000 

apc.mmap_file_mask = /tmp/apc.XXXXXX

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
php部分常见问题总结
Mar 27 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
PHP禁止页面缓存的代码
Oct 23 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
深入php define()函数以及defined()函数的用法详解
Jun 05 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
PHP 下载文件时自动添加bom头的方法实例
Jan 10 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
Aug 22 PHP
php中字符串和正则表达式详解
Oct 23 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
如何用PHP websocket实现网页实时聊天
May 26 PHP
php+xml编程之SimpleXML的应用实例
Jan 24 #PHP
php+xml编程之xpath的应用实例
Jan 24 #PHP
php+xml实现在线英文词典之添加词条的方法
Jan 23 #PHP
php+xml实现在线英文词典查询的方法
Jan 23 #PHP
通过php修改xml文档内容的方法
Jan 23 #PHP
通过php删除xml文档内容的方法
Jan 23 #PHP
Laravel实现用户注册和登录
Jan 23 #PHP
You might like
PHP排序算法类实例
2015/06/17 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
基于React.js实现原生js拖拽效果引发的思考
2016/03/30 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
详解从Vue-router到html5的pushState
2018/07/21 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
countUp.js实现数字动态变化效果
2019/10/17 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
python基础知识小结之集合
2015/11/25 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
Django csrf 两种方法设置form的实例
2019/02/03 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
使用HTML和CSS3绘制基本卡通图案的示例分享
2015/11/06 HTML / CSS
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
苹果音乐订阅:Apple Music
2018/08/02 全球购物
母亲节演讲稿
2014/05/27 职场文书
文秘自荐信
2014/06/28 职场文书
2015年前台个人工作总结
2015/04/03 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
观看建国大业观后感
2015/06/01 职场文书
2015年三好一满意工作总结
2015/07/24 职场文书