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 相关文章推荐
我的论坛源代码(二)
Oct 09 PHP
一个PHP操作Access类(PHP+ODBC+Access)
Jan 02 PHP
PHP实现多服务器session共享之NFS共享的方法
Mar 16 PHP
PHP session常见问题集锦及解决办法总结
Mar 18 PHP
从MySQL数据库表中取出随机数据的代码
Sep 05 PHP
php 验证码制作(网树注释思想)
Jul 20 PHP
php下mysql数据库操作类(改自discuz)
Jul 03 PHP
PHP备份/还原MySQL数据库的代码
Jan 06 PHP
php中的注释、变量、数组、常量、函数应用介绍
Nov 16 PHP
PHP简单实现DES加密解密的方法
Jul 12 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
Nov 25 PHP
PHP简单实现冒泡排序的方法
Dec 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
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
一些关于PHP的知识
2006/11/17 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
JQuery与iframe交互实现代码
2009/12/24 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
vue实现数字动态翻牌的效果(开箱即用)
2019/12/08 Javascript
python有证书的加密解密实现方法
2014/11/19 Python
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
Python数据处理numpy.median的实例讲解
2018/04/02 Python
python获取交互式ssh shell的方法
2019/02/14 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
Html5新增标签有哪些
2017/04/13 HTML / CSS
TIME时代杂志台湾总代理:台时亚洲
2018/10/22 全球购物
介绍一下Linux中的链接
2016/06/05 面试题
总经理任命书
2014/03/29 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
幼儿园母亲节活动总结
2015/02/10 职场文书
生产现场禁烟通知
2015/04/23 职场文书
学生犯错保证书
2015/05/09 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
小学体育课教学反思
2016/02/16 职场文书
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android