php cache()类,对一个cache类的实际应用_php
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相关推荐
- 《JAVA练习题目9》 创建一个Person类和一个Family类。(这次的OJ实在写的没有状态,被样例搞崩了,这次代码还有好多代码复制等一系列不良现象,就是为了过OJ写的。。大家凑活看一下吧)
题目内容: 创建一个Person类和一个Family类.其中, Person类包含编号id(整型).名字name(字符串).性别gender(字符串)三个属性,和一个初始化对象所有属性的有参构造方法, ...
- python 面向对象程序设计 1.3 请为学校图书管理系统设计一个管理员类和一个学生类。
题目: 请为学校图书管理系统设计一个管理员类和一个学生类.其中,管理员信息包括工号.年龄.姓名和工资:学生信息包括学号.年龄.姓名.所借图书和借书日期.最后编写一个测试程序对产生的类的功能进行验证.建 ...
- 虚函数之定义一个基类Shape,在此基础上派生出Rectangle和Circle再使用Rectangle类创建一个派生类Square。
定义一个基类Shape,在此基础上派生出Rectangle和Circle,二者都有getArea( )函数计算对象的面积,再使用Rectangle类创建一个派生类Square.将getArea()改造 ...
- 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户 类中增加密码、地址、最小余额和利率等成员变量,并增加一些银行账户经常用到的成员函数。 要求: (1)类
先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户 类中增加密码.地址.最小余额和利率等成员变量,并增加一些银行账户经常用到的成员函数. 要求: (1)类中的成员函数具有输入.输出 ...
- Java类的实践:使用Java类描述一个车类
/* 使用java类描述一个车类:* 车都具备名字.颜色两个属性,还具备跑的功能* 即设计一个汽车类Car,该类中包含两个属性姓名(name).颜色(color),一个用于描述汽车跑的run()方法. ...
- 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加一个静态成员变量(年利率),并增加如下成员函数:(1)计算月利息月利息=存款金额x年利率+12(2)更改利率(静态方法)
实验二:继承和派生程序设计(4学时)必做题: 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加一个静态成员变量(年利率),并增加如下成员函数:(1)计算月利息 月利息=存 ...
- 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加密码、地址、最小余额和利率等成员变量,并增加一些银行账户经常用到的成员函数。
要求: (1) 类中的成员函数具有输入.输出储户上述信息的功能: (2) 将账号设计成不可更改: (3) 修改密码时要提供原始密码. 开发工具vc6.0++ #include <iostream ...
- 定义一个基类Shape,在此基础上派生出Rectangle和Circle,二者都有getArea( )函数计算对象的面积,再使用Rectangle类创建一个派生类Square。
输入格式 Rectangle的长和宽.Circle的半径.Square的边长 输出格式 Rectangle.Circle和Square对应的面积.四舍五入到整数 输入样例 3 7 6 4 2.1 3. ...
- C++设计一个长方形类
设计一个长方形类 设计一个长方形类,通过访问它的成员变量来计算面积. class Rectangle {//在此处实现Rectangle类private:int height;int width; p ...
最新文章
- 在leangoo里怎么复制列表,删除列表,插入列表?
- .NET Core ASP.NET Core 1.0在Redhat峰会上正式发布
- ArcGIS提高地图浏览效率
- 什么是python中子类父类_零基础入门:python中子类继承父类的__init__方法实例
- HTTP 2.0与HTTP 1.0的区别 ?
- Bugku杂项-convert
- 实现两(三)列等高布局的方法
- linux把mysql变为服务器_linux mysql服务器迁移
- java自定义按钮代码_用于短代码的WP Tiny MCE帖子编辑器上的自定义按钮
- Linux shell基础(四)正则表达式与grep命令 beta
- Promise 最完整介绍与实现解密
- [设计模式-行为型]中介者模式(Mediator)
- 听力技巧-4大难点讲析
- scala构造器的介绍
- java 创建Reader_java – 最佳实践:为XMLReader创建SAX解析器
- 啥?喝着阔落吃着西瓜就把Promise手写出来了???
- 图(二):图的邻接矩阵表示
- 【物联网项目系列】——使用netty框架做一个环保hj212协议即时通讯工具(接收解析处理实时数据)
- android camera预览翻转,android camera yuv帧水平翻转实例
- C#开发工控上位机编程 csdn_中吉午餐自动售货机加热自动午餐盒智能便利店【盒饭售货机】_智能云仓储库存wms管理分配货_电子标签价签拣货系统_工控erp上位机软件开发设计...
热门文章
- java ssh乱码_SSH框架下中文字符乱码问题的研究
- 三相永磁同步电机(PMSM) SVPWM矢量控制 MATLA 仿真算法
- springboot2.0 多线程并发执行任务
- 【图像配准】基于matab SAR-SIFT改进的SAR图像配准【含Matlab源码 2336期】
- 化工单元操作复习题(含答案)
- HTC G2 超级新手教程之最终版
- 购买或者租用服务器注意项
- pixhawk飞控接口含义
- 计算机丢失credui.dll,修复credui.dll
- 用计算机弹卡路里数字,RER:猫卡路里摄入计算器,让猫保持完美身材的利器