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扩展编写点滴 技巧收集
Mar 09 PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 PHP
phpQuery占用内存过多的处理方法
Nov 13 PHP
CodeIgniter CLI模式简介
Jun 17 PHP
PHP中使用localhost连接Mysql不成功的解决方法
Aug 20 PHP
几个实用的PHP内置函数使用指南
Nov 27 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
Nov 28 PHP
ThinkPHP中order()使用方法详解
Apr 19 PHP
PHP读取、解析eml文件及生成网页的方法示例
Sep 04 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
Aug 05 PHP
PHP反射原理与用法深入分析
Sep 28 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
解析数组非数字键名引号的必要性
2013/08/09 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
浅谈struts1 &amp; jquery form 文件异步上传
2017/05/25 jQuery
js获取地址栏参数的两种方法
2017/06/27 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
详解angular2.x创建项目入门指令
2018/10/11 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
Django内容增加富文本功能的实例
2017/10/17 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
python实现统计代码行数的小工具
2019/09/19 Python
Ajax主要包含了哪些技术
2014/06/12 面试题
生产车间主管岗位职责
2013/12/28 职场文书
幼儿园教师教学反思
2014/02/06 职场文书
开业典礼主持词
2014/03/21 职场文书
幼儿园中班开学寄语
2014/04/03 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
财务出纳岗位职责
2015/03/31 职场文书
2015年派出所工作总结
2015/04/24 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python
django 认证类配置实现
2021/11/11 Python