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 相关文章推荐
session 的生命周期是多长
Oct 09 PHP
MySQL数据源表结构图示
Jun 05 PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
PHP 一个页面执行时间类代码
Mar 05 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
Jun 24 PHP
php中过滤非法字符的具体实现
Oct 29 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 PHP
php实现base64图片上传方式实例代码
Feb 22 PHP
PHP的反射机制实例详解
Mar 29 PHP
PHP实现获取第一个中文首字母并进行排序的方法
May 09 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
yii框架数据库关联查询操作示例
Oct 14 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使用PDO执行SQL语句的方法分析
2017/02/16 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
2016/01/22 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
Node.js中sequelize时区的配置方法
2017/12/10 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
Python中的自省(反射)详解
2015/06/02 Python
sublime text 3配置使用python操作方法
2017/06/11 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
Python实现的质因式分解算法示例
2018/05/03 Python
tensorflow实现简单逻辑回归
2018/09/07 Python
20行python代码实现人脸识别
2019/05/05 Python
关于pytorch处理类别不平衡的问题
2019/12/31 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
行政助理求职自荐信
2013/10/26 职场文书
四风问题对照检查材料
2014/09/22 职场文书
租房协议书范例
2014/10/14 职场文书
劳模事迹材料范文
2014/12/24 职场文书
债务追讨律师函
2015/06/24 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书