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
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
Jun 26 PHP
PHP中鲜为人知的10个函数
Feb 28 PHP
php实现curl模拟ftp上传的方法
Jul 29 PHP
PHP常用的排序和查找算法
Aug 06 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
Mar 04 PHP
PHP中使用foreach()遍历二维数组的简单实例
Jun 13 PHP
thinkPHP商城公告功能开发问题分析
Dec 01 PHP
php redis实现对200w用户的即时推送
Mar 04 PHP
Laravel中使用Queue的最基本操作教程
Dec 27 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 PHP
PHP调用接口用post方法传送json数据的实例
May 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
德劲1107的电路分析与打磨
2021/03/02 无线电
解析左右值无限分类的实现算法
2013/06/20 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
PHP引用返回用法示例
2016/05/28 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
PHP 爬取网页的主要方法
2018/07/13 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
让getElementsByName适应IE和firefox的方法
2007/09/24 Javascript
jQuery checkbox全选/取消全选实现代码
2009/11/14 Javascript
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
javascript中的缓动效果实现程序
2012/12/29 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
js禁止表单重复提交
2017/08/29 Javascript
react中的ajax封装实例详解
2017/10/17 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
js提取中文拼音首字母的封装工具类
2018/03/12 Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
2018/05/27 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
详解Python中的join()函数的用法
2015/04/07 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
对Python _取log的几种方式小结
2019/07/25 Python
Python数据正态性检验实现过程
2020/04/18 Python
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
什么是属性访问器
2015/10/26 面试题
毕业生评语大全
2015/01/04 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
超外差式晶体管收音机的组装与统调
2021/04/22 无线电