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函数之子字符串替换&amp;#65279; str_replace
Mar 23 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
Jan 09 PHP
Yii使用CLinkPager分页实例详解
Jul 23 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
Mar 04 PHP
php循环table实现一行两列显示的方法
Jun 04 PHP
PHP 读取文本文件内容并分页显示
Jan 02 PHP
php连接oracle数据库的核心步骤
May 26 PHP
PHP编写daemon process 实例详解
Nov 13 PHP
CodeIgniter整合Smarty的方法详解
Aug 25 PHP
PHP设计模式之状态模式定义与用法详解
Apr 02 PHP
PHP7内核CGI与FastCGI详解
Apr 14 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
May 02 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
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
ThinkPHP基本的增删查改操作实例教程
2014/08/22 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
2019/10/10 PHP
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
2013/08/27 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
一些实用性较高的js方法
2016/04/19 Javascript
javascript实现仿百度图片的瀑布流加载效果
2016/04/20 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
js转换对象为xml
2017/02/17 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
微信小程序登录数据解密及状态维持实例详解
2019/05/06 Javascript
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
python类装饰器用法实例
2015/06/04 Python
python从入门到精通(DAY 2)
2015/12/20 Python
python正则表达式之作业计算器
2016/03/18 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
国际会议邀请函范文
2014/01/16 职场文书
程序员求职信
2014/04/16 职场文书
作风建设演讲稿
2014/05/23 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
党员个人公开承诺书
2014/08/29 职场文书
幼儿园教师教育随笔
2015/08/14 职场文书
工作报告范文
2019/06/20 职场文书
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS