PHP数据缓存技术


Posted in PHP onFebruary 14, 2007

数据缓存是web开发中常用的一种性能优化方法。目前主要文件缓存或者数据库缓存两种形式,数据库缓存数据库不是什么不可能的事情,的确也是很好很重要的。我认为传统数据库主要是从业务层、模块设计等方面来考虑的,而缓存数据库主要是从实现层来设计的,主要是为了缓存常用的多表查询之类的。这里主要将的是文件缓存,网上很多资料了,这里我转载了一些原理资料。
   Cache是“以空间换时间”策略的典型应用模式,是提高系统性能的一种重要方法。缓存的使用在大访问量的情况下能够极大的减少对数据库操作的次数,明显降低系统负荷提高系统性能。相比页面的缓存,结果集是一种“原始数据”不包含格式信息,数据量相对较小,而且可以再进行格式化,所以显得相当灵活。由于PHP是“一边编译一边执行”的脚本语言,某种程度上也提供了一种相当方便的结果集缓存使用方法——通过动态include相应的数据定义代码段的方式使用缓存。如果在“RamDisk”上建缓存的话,效率应该还可以得到进一步的提升。以下是一小段示例代码,供参考。


<?
// load data with cache  function load_data($id,$cache_lifetime) {  // the return data  $data = array();  // make cache filename  $cache_filename ‘cache_‘.$id..php‘// check cache file‘s last modify time  $cache_filetime filemtime($cache_filename); 

if (

time() - $cache_filetime <= $cache_lifetime) {  //** the cache is not expire  include($cache_filename); 

} else { 

//** the cache is expired 

// load data from database 

// ... 

while ($dbo->nextRecord()) {  // $data[] = ...  // format the data as a php file  $data_cache "

while (list($key, $val) = each($data)) { 

$data_cache .= "

$data[‘$key‘]=array("; 

$data_cache .= "

‘NAME‘=>"".qoute($val[‘NAME‘])."\","  $data_cache .= "‘VALUE‘=>\"".qoute($val[‘VALUE‘])."\""  $data_cache .= ";);\r\n"

$data_cache "?>\r\n"// save the data to the cache file  if ($fd fopen($cache_filename,‘w+)) {  fputs($fd,$data_cache);  fclose($fd); 

return 

$data

?> 

适用情况:
1.数据相对比较稳定,主要是读取操作。
2.文件操作要比数据库操作快。
3.复杂数据访问,大数据量访问,密集数据访问,系统数据库负载极重。
4.Web/DB分离结构或者多Web单DB结构。

未经证实的问题:
1.并发访问时对文件的读写是否会引起锁定问题。
2.涉及到的数据文件太多时,性能如何。
扩展思路:
1.生成JavaScript数据定义代码,在客户端调用。
2.还未想到……  

望共同探讨。

PHP 相关文章推荐
PHP脚本数据库功能详解(下)
Oct 09 PHP
用php过滤危险html代码的函数
Jul 22 PHP
PHP递归调用的小技巧讲解
Feb 19 PHP
基于php实现长连接的方法与注意事项的问题
May 10 PHP
基于PHP输出缓存(output_buffering)的深入理解
Jun 13 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
Sep 12 PHP
PHP中定义数组常量(array常量)的方法
Nov 17 PHP
php数组比较实现查找连续数的方法
Jul 29 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
Apr 05 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
Dec 12 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 PHP
再次研究下cache_lite
Feb 14 #PHP
cache_lite试用
Feb 14 #PHP
一个捕获函数输出的函数
Feb 14 #PHP
模拟flock实现文件锁定
Feb 14 #PHP
回答PHPCHINA上的几个问题:URL映射
Feb 14 #PHP
简单采集了yahoo的一些数据
Feb 14 #PHP
自己前几天写的无限分类类
Feb 14 #PHP
You might like
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
php下删除一篇文章生成的多个静态页面
2010/08/08 PHP
Php图像处理类代码分享
2012/01/19 PHP
PHP无限分类(树形类)的深入分析
2013/06/02 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
php数组合并array_merge()函数使用注意事项
2014/06/19 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
php如何计算两坐标点之间的距离
2018/12/29 PHP
javascript 隔行换色函数代码
2010/10/24 Javascript
node.js实现端口转发
2016/04/14 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
Python的函数的一些高阶特性
2015/04/27 Python
Python的Django框架中的Context使用
2015/07/15 Python
Python正则简单实例分析
2017/03/21 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
如何用Python做一个微信机器人自动拉群
2019/07/03 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
您的网上新华书店:文轩网
2016/08/24 全球购物
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
初二生物教学反思
2014/02/03 职场文书
教师自我剖析材料
2014/09/29 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
2014年工作总结与下年工作计划
2014/11/27 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
2016教师节感恩话语
2015/12/09 职场文书
2016全国“质量月”活动标语口号
2015/12/26 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python