PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP高级编程 >> 高级应用 >> 

PHP中缓存技术的应用

PHP中缓存技术的应用

来源:互联网  作者:  发布时间:2010-05-20
PHP,一门最近几年兴起的web设计脚本语言,由于它的强大和可伸缩

下面我打断这个代码逐行解释.

三:程序透析

这个缓存类(类没什么好怕的.请继续看)名称是cache,有2个属性:

private$cache_dir;
private$expireTime=180;

$cache_dir是缓存文件所放的相对网站目录的父目录,$expireTime(注释一)是我们缓存的数据过期的时间,主要是这个思路:

当数据或者文件被加载的时候,先判断缓存文件存在不,返回false,文件最后修改时间和缓存的时间和比当前时间大不,大的话说明缓存还没到期,小的话返回false,当返回false的时候,读取原始数据,写入缓存文件中,返回数据.,

接着看程序:

function__construct($cache_dirname){
if(!@is_dir($cache_dirname)){
if(!@mkdir($cache_dirname,0777)){
$this->warn('缓存文件不存在而且不能创建,需要手动创建.');
returnfalse;
}
}
$this->cache_dir=$cache_dirname;
}

当类第一次被实例的时候构造默认函数带参数缓存文件名称,如文件不存在,创建一个有编辑权限的文件夹,创建失败的时候抛出异常.然后把cache类的$cache_dir属性设置为这个文件夹名称,我们的所有缓存文件都是在这个文件夹下面的.

function__destruct(){
echo'Cacheclassbye.';
}

这是class类的析构函数,为了演示,我们输出一个字符串表示我们释放cache类资源成功.

functionwarn($errorstring){
echo"<b><fontcolor='red'>发生错误:<pre>".$errorstring."</pre></font></b>";
}

 

这个方法输出错误信息.

functionget_url(){
if(!isset($_SERVER['REQUEST_URI'])){
$url=$_SERVER['REQUEST_URI'];
}else{
$url=$_SERVER['SCRIPT_NAME'];
$url.=(!empty($_SERVER['QUERY_STRING']))?'?'.$_SERVER['QUERY_STRING']:'';
}
return$url;
}

这个方法返回当前url的信息,这是我看国外很多人的cms系统这样做,主要是缓存x.php?page=1,x.php?page=2,等这种文件的,这里列出是为了扩展的这个cache类功能的.

functioncache_page($pageurl,$pagedata){
if(!$fso=fopen($pageurl,'w')){
$this->warns('无法打开缓存文件.');//trigger_error
returnfalse;
}
if(!flock($fso,LOCK_EX)){//LOCK_NB,排它型锁定
$this->warns('无法锁定缓存文件.');//trigger_error
returnfalse;
}
if(!fwrite($fso,$pagedata)){//写入字节流,serialize写入其他格式
$this->warns('无法写入缓存文件.');//trigger_error
returnfalse;
}
flock($fso,LOCK_UN);//释放锁定
fclose($fso);
returntrue;
}

cache_page方法分别传入的是缓存的文件名称和数据,这是把数据写到文件里的方法,先用fopen打开文件,然后调用句柄锁定这个文件,然后用fwrite写入文件,最后释放这个句柄,任何一步发生错误将抛出错误.您可能看到这个注释


延伸阅读:
php的缓存类
使用APC缓存优化PHP程序
PHP应用memcache函数详解
smarty缓存控制
三款免费的PHP加速器:APC、eAccelerator、XCache比较
PHP MEMCACHE 详解
PHP Memcached + APC + 文件缓存封装
什么是MemCache
Memcache的安装和使用及协议分析详解
memcached 和 mysql 主从环境下php开发代码详解


Tags: php   缓存   技术   cache   应用  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号