SEM知识
分享创造价值 合作实现共赢

SEM知识

当前位置: 首页 > 新闻动态 > SEM知识

(实用篇)PHP缓存类完整实例

发布时间:2021-07-03 22:54:51作者:顺晟科技点击:

本文完整描述了一个简洁实用的服务器端编程语言(专业超文本预处理器的缩写)缓存类,可用来检查缓存文件是否在设置更新时间之内、清除缓存文件、根据当前动态文件生成缓存文件名、连续创建目录、缓存文件输出静态等功能。对于采用服务器端编程语言(专业超文本预处理器的缩写)开发羧甲基淀粉钠系统来说,离不开对缓存的处理,合理利用好缓存可有效的提高程序执行效率。

服务器端编程语言(专业超文本预处理器的缩写)缓存类文件完整代码如下:

/*

* 缓存类躲藏

*/

类缓存{

//缓存目录

var $cacheRoot=' ./cache/';

//缓存更新时间秒数,0为不缓存

var $ cacheLimitTime=0;

//缓存文件名

var $ cacheFileName=

//缓存扩展名

var $ cacheFileExt=' php

/*

* 构造函数

* int $cacheLimitTime缓存更新时间

*/

函数缓存($cacheLimitTime ) {

if(intval($cacheLimitTime))

$ this-cacheLimitTime=$ cacheLimitTime;

$ this-cache filename=$ this-Getcache filename();

ob _ start();

}

/*

* 检查缓存文件是否在设置更新时间之内

* 返回:如果在更新时间之内则返回文件内容,反之则返回失败

*/

函数cacheCheck(){

if(file _ exists($ this-cache filename)){

$ CTime=$ this-GetFileCreateTime($ this-缓存文件名);

if($ CTime $ this-cacheLimittime()){

echo file _ get _ contents($ this-cache filename);

ob _ end _ flush();

退出;

}

}

返回错误的

}

/*

* 缓存文件或者输出静态

*字符串$静态文件名静态文件名(含相对路径)

*/

函数缓存($ StatiFileName=' '){

if($this-cacheFileName ) {

$ cacheContent=ob _ get _ contents();

ob _ end _ flush();

if($staticFileName ) {

$this-saveFile($staticFileName,$ cacheContent);

}

if($this-cacheLimitTime)

$ this-保存文件($ this-缓存文件名,$缓存内容);

}

}

/*

* 清除缓存文件

*字符串$fileName指定文件名(含函数)或者全部(全部)

* 返回:清除成功返回没错,反之返回错误的

*/

函数clearCache($fileName='all' ) {

if($fileName!='all' ) {

$fileName=$this-cacheRoot .str topol(MD5($ FIlename)).'.'。$ this-cacheFileExt;

if(file_exists($fileName ) ) {

return @ unlink($ FIlename);

}else返回错误的

}

if (is_dir($this-cacheRoot ) ) {

if($ dir=@ opendir($ this-cacheRoot)){

while ($file=@readdir($dir ) ) {

$ check=is _ dir($ file);

if(!$支票)

@unlink($this-cacheRoot .$ file);

}

@ closedir($ dir);

返回真实的

}else{

返回错误的

}

}else{

返回错误的

}

}

/*根据当前动态文件生成缓存文件名*/

函数getCacheFileName() {

返回$this-cacheRoot .strtopher(MD5($ _ SERVER[' REQUEST _ URI ']).'.'。$ this-cacheFileExt;

}

/*

* 缓存文件建立时间

*字符串$fileName缓存文件名(含相对路径)

* 返回:文件生成时间秒数,文件不存在返回0

*/

函数getFileCreateTime($fileName ) {

if(!修剪($fileName))返回0;

if(file_exists($fileName ) ) {

返回int val(文件mtime($ FIlename));

}否则返回0;

}

/*

* 保存文件

*字符串$fileName文件名(含相对路径)

* string $text文件内容

* 返回:成功返回真实,失败返回错误的

*/

函数保存文件($fileName,$text) {

if(!$fileName ||!$text)返回错误的

if($ this-MakeDir(dir name($ FileName))){

if($fp=fopen($fileName,' w '){

if(@fwrite($fp,$text ) ) {

fc输($ FP);

返回真实的

}else {

fc输($ FP);

返回错误的

}

}

}

返回错误的

}

/*

* 连续建目录

*字符串$dir目录字符串

* int $模式权限数字

* 返回:顺利创建或者全部已建返回没错,其它方式返回错误的

*/

函数makeDir($dir,$mode='0777' ) {

if(!$dir)返回0;

$dir=str_replace('\ ','/',$ dir);

$ mdir=

foreach(分解('/',$dir)为$val ) {

$mdir .=$val .'/';

if($val==' . '|| $val==',' || trim($val )=')继续;

if(!file_exists($mdir ) ) {

if(!@mkdir($mdir,$mode )){

返回错误的

}

}

}

返回真实的

}

}

使用该缓存类的时候可将以上代码保存为cache.php,具体用法如下所示:

包括('缓存。PHP ');

$cache=新缓存(30);

$ cache-cache Check();

回声日期(' Y-m-d h : I :s ');

$ cache-cache();最后一句$ cache-cache();参数$ cache-cache(30)也应该用括号替换。放在代码的末尾。否则,报告一个错误

TOP

QQ客服

18910140161