Class_Cache.php:

class cache

{

http://www.gaodaima.com/46817.html对一个cache类的实际应用_php

var $cacheDirectory;

var $cacheDuration=3600;

var $cacheFilename;

function cache($cacheDuration=3600,$cacheDirectory='./cache')

{

$this->cacheDuration = 0;

$this->cacheDirectory = '.';

$this->cacheFilename = '';

$this->updateCache($cacheDuration,$cacheDirectory);

}

function getCacheFilename()

{

return $this->cacheFilename;

}

function updateCache($cacheDuration=3600,$cacheFolder='./cache')

{

$this->cacheDuration = $cacheDuration;

$this->cacheDirectory = $cacheFolder;

$this->_makeCacheFolder();

}

function _makeCacheFolder()

{

/*if (!is_dir($this->cacheDirectory))

{

$temp = explode('/',$this->cacheDirectory);

$cur_dir = '';

for($i=0;$i

{

$cur_dir .= $temp[$i].'/';

if (!is_dir($cur_dir))

{

if (@mkdir($cur_dir,777)&&($cur_dir!=getcwd()))

{

$this->_writeFile($cur_dir.'.htaccess','Deny from all');

$this->_writeFile($cur_dir.'index.html','');

}

}

}

}*/

if (!is_dir($this->cacheDirectory))

{

$cur_dir=$this->cacheDirectory;

//echo $cur_dir;

if (@mkdir($cur_dir,777))

{

$this->_writeFile($cur_dir.'.htaccess','Deny from all');

$this->_writeFile($cur_dir.'index.html','');

}

}

}

function _writeFile($filename,$contents)

{

if (!file_exists($filename))

{

$fp = @fopen($filename,'w');

if ($fp)

{

fputs($fp,$contents);

fclose($fp);

}

}else{

unlink($filename);

$fp = @fopen($filename,'w');

if ($fp)

{

fputs($fp,$contents);

fclose($fp);

}

}

}

function _setCacheFilename($contents)

{

//$this->cacheFilename = $this->cacheDirectory.'/'.md5($contents).'.txt';

/***********/

global $cache_file;

$this->cacheFilename = $this->cacheDirectory.'/'.$cache_file.'.txt';

/***********/

}

function returnCacheTime()

{

//return "asdfd";

$tim=filemtime($this->cacheFilename);

return date('Y年m月d日 H时i分s秒',$tim);

}

function inCache($contents,$sty='')

{

$this->_setCacheFilename($contents);

if($sty==1)

{

return file_exists($this->cacheFilename);

}else{

if(file_exists($this->cacheFilename))

{

$tim=filemtime($this->cacheFilename);

if((time()-$tim)>$this->cacheDuration)

{

return false;

}else{

return true;

}

}else{

return false;

}

}

}

function readCache()

{

$contents = '';

$fp = @fopen($this->cacheFilename,'r');

if ($fp)

{

while(!feof($fp))

$contents .= fread($fp,4096);

fclose($fp);

}

return $contents;

}

function saveInCache($contents,$filename='')

{

if (trim($filename)=='') $filename = $contents;

if ($this->inCache($filename,1))

{

if((time()-filemtime($this->cacheFilename))>$this->cacheDuration)

{

@unlink($this->cacheFilename);

}

}

$this->_writeFile($this->cacheFilename,$contents);

}

}

?>

cache.php:

require_once("Class_Cache.php");?>

//---------页面缓存----------

$is_cache=1;//是否缓存

$cache_time=300;//缓存时间

if ((strstr($script_name,"/member/") == true) || (strstr($script_name,"/common/") == true))

$is_cache=0;

$cacheDirectory=$_SERVER['DOCUMENT_ROOT']."/cache/";

if($_SERVER['QUERY_STRING']=='')

$cache_file=$_SERVER['PHP_SELF'];

else

$cache_file=$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];

if($_SERVER['PHP_SELF']=="/index.php")

$cache_file="___index.php";

$cache_file=preg_replace(array("","//?/"),array("",""),$cache_file);

//echo $cache_file;

if($is_cache==1)

{

$cache=new cache($cache_time,$cacheDirectory);

if($cache->incache($cache_file))

{

$output=$cache->readcache();

$CacheTime=$cache->returnCacheTime();

unset($cache);

//if( function_exists(return_execute_time()) )

$execute_time=return_execute_time();

$output=str_replace("",$execute_time."
缓存版本:".$CacheTime,$output);

print($output);

exit;

}else

ob_start();

}

function all_cache()

{

global $is_cache;

global $cache_file;

global $cache;

if($is_cache==1)

{

//这里是输出的内容

$output = ob_get_clean();

ob_end_clean();

$cache->saveInCache($output,$cache_file);

$CacheTime=$cache->returnCacheTime();

unset($cache);

//if( function_exists(return_execute_time()) )

$execute_time=return_execute_time();

$output=str_replace("",$execute_time."
缓存版本:".$CacheTime,$output);

print($output);

//exit;

}

}

?>

用法

在页面开头引用

require("cache.php")?>

在页面最后加上

all_cache();?>

实际应用http://www.scmetals.com

class_cache类 原贴:http://www.phpx.com/happy/thr83014.html

class_cache.php内容如下

class cache

{

var $cacheDirectory;

var $cacheDuration=3600;

var $cacheFilename;

function cache($cacheDuration=3600,$cacheDirectory='./cache')

{

$this->cacheDuration = 0;

$this->cacheFilename = '';

$this->cacheDirectory = '.';

$this->updateCache($cacheDuration,$cacheDirectory);

}

function _makeCacheFolder()

{

if (!is_dir($this->cacheDirectory))

{

$temp = explode('/',$this->cacheDirectory);

$cur_dir = '';

for($i=0;$i

{

$cur_dir .= $temp[$i].'/';

if (!is_dir($cur_dir))

{

if (@mkdir($cur_dir,777)&&($cur_dir!=getcwd()))

{

$this->_writeFile($cur_dir.'.htaccess','Deny from all');

$this->_writeFile($cur_dir.'index.html','');

}

}

}

}

}

function getCacheFilename()

{

return $this->cacheFilename;

}

function _setCacheFilename($contents)

{

$this->cacheFilename = $this->cacheDirectory.'/'.md5($contents).'.txt';

}

function inCache($contents,$sty='')

{

$this->_setCacheFilename($contents);

if($sty==1)

{

return file_exists($this->cacheFilename);

}

else

{

if(file_exists($this->cacheFilename))

{

$tim=filemtime($this->cacheFilename);

if((time()-$tim)>$this->cacheDuration)

{

return false;

}

else

{

return true;

}

}

else

{

return false;

}

}

}

function readCache()

{

$contents = '';

$fp = @fopen($this->cacheFilename,'r');

if ($fp)

{

while(!feof($fp)) $contents .= fread($fp,4096);

fclose($fp);

}

return $contents;

}

function updateCache($cacheDuration=3600,$cacheFolder='./cache')

{

$this->cacheDuration = $cacheDuration;

$this->cacheDirectory = $cacheFolder;

$this->_makeCacheFolder();

}

function saveInCache($contents,$filename='')

{

if (trim($filename)=='') $filename = $contents;

if ($this->inCache($filename,1))

{

if((time()-filemtime($this->cacheFilename))>$this->cacheDuration)

{

@unlink($this->cacheFilename);

}

}

$this->_writeFile($this->cacheFilename,$contents);

}

function _writeFile($filename,$contents)

{

if (!file_exists($filename))

{

$fp = @fopen($filename,'w');

if ($fp)

{

fputs($fp,$contents);

fclose($fp);

}

}

else

{

unlink($filename);

$fp = @fopen($filename,'w');

if ($fp)

{

fputs($fp,$contents);

fclose($fp);

}

}

}

}

?>

欢迎大家阅读《对一个cache类的实际应用_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

原创文章,转载请注明: 转载自搞代码

微信 赏一包辣条吧~

支付宝 赏一听可乐吧~

php cache()类,对一个cache类的实际应用_php相关推荐

  1. 《JAVA练习题目9》 创建一个Person类和一个Family类。(这次的OJ实在写的没有状态,被样例搞崩了,这次代码还有好多代码复制等一系列不良现象,就是为了过OJ写的。。大家凑活看一下吧)

    题目内容: 创建一个Person类和一个Family类.其中, Person类包含编号id(整型).名字name(字符串).性别gender(字符串)三个属性,和一个初始化对象所有属性的有参构造方法, ...

  2. python 面向对象程序设计 1.3 请为学校图书管理系统设计一个管理员类和一个学生类。

    题目: 请为学校图书管理系统设计一个管理员类和一个学生类.其中,管理员信息包括工号.年龄.姓名和工资:学生信息包括学号.年龄.姓名.所借图书和借书日期.最后编写一个测试程序对产生的类的功能进行验证.建 ...

  3. 虚函数之定义一个基类Shape,在此基础上派生出Rectangle和Circle再使用Rectangle类创建一个派生类Square。

    定义一个基类Shape,在此基础上派生出Rectangle和Circle,二者都有getArea( )函数计算对象的面积,再使用Rectangle类创建一个派生类Square.将getArea()改造 ...

  4. 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户 类中增加密码、地址、最小余额和利率等成员变量,并增加一些银行账户经常用到的成员函数。 要求: (1)类

    先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户 类中增加密码.地址.最小余额和利率等成员变量,并增加一些银行账户经常用到的成员函数. 要求: (1)类中的成员函数具有输入.输出 ...

  5. Java类的实践:使用Java类描述一个车类

    /* 使用java类描述一个车类:* 车都具备名字.颜色两个属性,还具备跑的功能* 即设计一个汽车类Car,该类中包含两个属性姓名(name).颜色(color),一个用于描述汽车跑的run()方法. ...

  6. 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加一个静态成员变量(年利率),并增加如下成员函数:(1)计算月利息月利息=存款金额x年利率+12(2)更改利率(静态方法)

    实验二:继承和派生程序设计(4学时)必做题: 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加一个静态成员变量(年利率),并增加如下成员函数:(1)计算月利息 月利息=存 ...

  7. 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加密码、地址、最小余额和利率等成员变量,并增加一些银行账户经常用到的成员函数。

    要求: (1) 类中的成员函数具有输入.输出储户上述信息的功能: (2) 将账号设计成不可更改: (3) 修改密码时要提供原始密码. 开发工具vc6.0++ #include <iostream ...

  8. 定义一个基类Shape,在此基础上派生出Rectangle和Circle,二者都有getArea( )函数计算对象的面积,再使用Rectangle类创建一个派生类Square。

    输入格式 Rectangle的长和宽.Circle的半径.Square的边长 输出格式 Rectangle.Circle和Square对应的面积.四舍五入到整数 输入样例 3 7 6 4 2.1 3. ...

  9. C++设计一个长方形类

    设计一个长方形类 设计一个长方形类,通过访问它的成员变量来计算面积. class Rectangle {//在此处实现Rectangle类private:int height;int width; p ...

最新文章

  1. 在leangoo里怎么复制列表,删除列表,插入列表?
  2. .NET Core ASP.NET Core 1.0在Redhat峰会上正式发布
  3. ArcGIS提高地图浏览效率
  4. 什么是python中子类父类_零基础入门:python中子类继承父类的__init__方法实例
  5. HTTP 2.0与HTTP 1.0的区别 ?
  6. Bugku杂项-convert
  7. 实现两(三)列等高布局的方法
  8. linux把mysql变为服务器_linux mysql服务器迁移
  9. java自定义按钮代码_用于短代码的WP Tiny MCE帖子编辑器上的自定义按钮
  10. Linux shell基础(四)正则表达式与grep命令 beta
  11. Promise 最完整介绍与实现解密
  12. [设计模式-行为型]中介者模式(Mediator)
  13. 听力技巧-4大难点讲析
  14. scala构造器的介绍
  15. java 创建Reader_java – 最佳实践:为XMLReader创建SAX解析器
  16. 啥?喝着阔落吃着西瓜就把Promise手写出来了???
  17. 图(二):图的邻接矩阵表示
  18. 【物联网项目系列】——使用netty框架做一个环保hj212协议即时通讯工具(接收解析处理实时数据)
  19. android camera预览翻转,android camera yuv帧水平翻转实例
  20. C#开发工控上位机编程 csdn_中吉午餐自动售货机加热自动午餐盒智能便利店【盒饭售货机】_智能云仓储库存wms管理分配货_电子标签价签拣货系统_工控erp上位机软件开发设计...

热门文章

  1. java ssh乱码_SSH框架下中文字符乱码问题的研究
  2. 三相永磁同步电机(PMSM) SVPWM矢量控制 MATLA 仿真算法
  3. springboot2.0 多线程并发执行任务
  4. 【图像配准】基于matab SAR-SIFT改进的SAR图像配准【含Matlab源码 2336期】
  5. 化工单元操作复习题(含答案)
  6. HTC G2 超级新手教程之最终版
  7. 购买或者租用服务器注意项
  8. pixhawk飞控接口含义
  9. 计算机丢失credui.dll,修复credui.dll
  10. 用计算机弹卡路里数字,RER:猫卡路里摄入计算器,让猫保持完美身材的利器