PHP数据缓存技术

 更新时间:2007年02月14日 00:00:00   作者:  
数据缓存是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-zbarcode安装与使用)

    PHP识别二维码的方法(php-zbarcode安装与使用)

    这篇文章主要介绍了PHP识别二维码的方法,通过安装ImageMagick和php-zbarcode扩展实现针对二维码的识别功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • php生成RSS订阅的方法

    php生成RSS订阅的方法

    这篇文章主要介绍了php生成RSS订阅的方法,较为详细的分析了一个RSS订阅类及其具体使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-02-02
  • PHP实现图片上传并压缩

    PHP实现图片上传并压缩

    这篇文章主要介绍了PHP实现图片上传并压缩的相关资料,上传图片然后按照比例缩略图,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • 如何写php守护进程(Daemon)

    如何写php守护进程(Daemon)

    这篇文章主要介绍了如何写php守护进程Daemon,
    2015-12-12
  • PHP的JSON封装、转变及输出操作示例

    PHP的JSON封装、转变及输出操作示例

    这篇文章主要介绍了PHP的JSON封装、转变及输出操作,结合实例形式分析了php常见的json封装、解析、打印输出相关操作技巧,需要的朋友可以参考下
    2019-09-09
  • PHP pear安装配置教程

    PHP pear安装配置教程

    这篇文章主要为大家详细介绍了PHP pear安装配置教程,告诉大家如何获取并安装PEAR,感兴趣的朋友可以参考一下
    2016-05-05
  • PHP 中关于ord($str)&gt;0x80的详细说明

    PHP 中关于ord($str)&gt;0x80的详细说明

    为了识别双字节的字符,比如汉字或日文韩文等都是占两字节的,每字节高位为1,而一般西文字符只有一个字节,七位有效编码,高位为0而0x80对应的二进制代码为1000 0000,最高位为一,代表汉字.汉字编码格式通称为10格式. 一个汉字占2字节,但只代表一个字符
    2012-09-09
  • PHP whois查询类定义与用法示例

    PHP whois查询类定义与用法示例

    这篇文章主要介绍了PHP whois查询类定义与用法,结合实例形式分析了php定义及使用whois查询类进行网站whois查询的相关操作技巧,需要的朋友可以参考下
    2019-04-04
  • PHP支持多种格式图片上传(支持jpg、png、gif)

    PHP支持多种格式图片上传(支持jpg、png、gif)

    简单地写了一个PHP的图片上传,可以支持jpg、png、gif等格式的图片,如果你想支持更多的格式,比如bmp,可以自己扩充。不是面向对象的,在这里简单记录下,以便以后取用
    2011-11-11
  • php的webservice的wsdl的XML无法显示问题的解决方法

    php的webservice的wsdl的XML无法显示问题的解决方法

    本篇文章是对php的webservice的wsdl的XML无法显示问题的解决方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-03-03

最新评论