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 相关文章推荐
在PHP3中实现SESSION的功能(二)
Oct 09 PHP
php预定义常量
Dec 25 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 29 PHP
php 正则匹配函数体
Aug 25 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
Jun 18 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
Jun 29 PHP
php中生成随机密码的自定义函数代码
Oct 21 PHP
php技术实现加载字体并保存成图片
Jul 27 PHP
WordPress中用于获取文章作者与分类信息的方法整理
Dec 17 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
Dec 31 PHP
Zend Framework教程之Bootstrap类用法概述
Mar 14 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 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
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
PHP中比较时间大小实例
2014/08/21 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
理解 JavaScript 预解析
2009/10/25 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
Python计算回文数的方法
2015/03/11 Python
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
Python聚类算法之凝聚层次聚类实例分析
2015/11/20 Python
使用python实现rsa算法代码
2016/02/17 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
Python如何执行系统命令
2020/09/23 Python
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
Ado与Ado.net的相同与不同
2014/12/08 面试题
农村改厕实施方案
2014/03/22 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
2016年学校安全教育月活动总结
2016/04/06 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
django中websocket的具体使用
2022/01/22 Python
使用Apache Camel表达REST服务的方法
2022/06/10 Servers