cache.php 代码如下:
PHP代码
<?  
/* 
用户需要事先定义的常量: 
_CachePath_        模板缓存路径 
_CacheEnable_        自动缓存机制是否开启,未定义或为空,表示关闭自动缓存机制 
_ReCacheTime_        自动重新缓存间隔时间,单位为秒,未定义或为空,表示关闭自动重新缓存 
*/  
class cache {  
var $cachefile;  
var $cachefilevar;  
function cache() {  
//生成当前页的Cache组文件名 $this->cachefilevar 及文件名 $this->cachefile  
//动态页的参数不同对应的Cache文件也不同,但是每一个动态页的所有Cache文件都有相同的文件名,只是扩展名不同  
$s=array(".","/");$r=array("_","");  
$this->cachefilevar=str_replace($s,$r,$_SERVER["SCRIPT_NAME"])."_".$_GET[_ActionVar_];  
$this->cachefile=$this->cachefilevar.".".md5($_SERVER["REQUEST_URI"]);  
}  
//删除当前页/模块的缓存  
function delete() {  
//删除当前页的缓存  
$d = dir(_CachePath_);  
$strlen=strlen($this->cachefilevar);  
//返回当前页的所有Cache文件组  
while (false !== ($entry = $d->read())) {  
if (substr($entry,0,$strlen)==$this->cachefilevar) {  
if (!unlink(_CachePath_."/".$entry)) {echo "Cache目录无法写入";exit;}  
}  
}  
}  
//判断是否已Cache过,以及是否需要Cache  
function check() {  
//如果设置了缓存更新间隔时间 _ReCacheTime_  
if (_ReCacheTime_+0>0)        {  
//返回当前页Cache的最后更新时间  
$var=@file(_CachePath_."/".$this->cachefilevar);$var=$var[0];  
//如果更新时间超出更新间隔时间则删除Cache文件  
if (time()-$var>_ReCacheTime_) {  
$this->delete();$ischage=true;  
}  
}  
//返回当前页的Cache  
$file=_CachePath_."/".$this->cachefile;  
//判断当前页Cache是否存在 且 Cache功能是否开启  
return (file_exists($file) and _CacheEnable_ and !$ischange);  
}  
//读取Cache  
function read() {  
//返回当前页的Cache  
$file=_CachePath_."/".$this->cachefile;  
//读取Cache文件的内容  
if (_CacheEnable_) return readfile($file);  
else return false;  
}  
//生成Cache  
function write($output) {  
//返回当前页的Cache  
$file=_CachePath_."/".$this->cachefile;  
//如果Cache功能开启  
if (_CacheEnable_) {  
//把输出的内容写入Cache文件  
$fp=@fopen($file,'w');  
if (!@fputs($fp,$output)) {echo "模板Cache写入失败";exit;}  
@fclose($fp);  
//如果设置了缓存更新间隔时间 _ReCacheTime_  
if (_ReCacheTime_+0>0) {  
//更新当前页Cache的最后更新时间  
$file=_CachePath_."/".$this->cachefilevar;  
$fp=@fopen($file,'w');  
if (!@fwrite($fp,time())) {echo "Cache目录无法写入";exit;}  
@fclose($fp);  
}  
}  
}  
}  
?>  
使用过程:
PHP代码
<?php  
define("_CachePath_","./cache/");  
define("_CacheEnable_","1");  
define("_ReCacheTime_","43200");  
include('cache.php');  
$cache=new cache();  
if ($cache->check()) {  
$template=$cache->read();  
}else {  
ob_start();  
ob_implicit_flush(0);  
?>  
页面内容。。。。  
<?php  
$template = ob_get_contents();  
$cache->write($template);  
}  
?>  
缓存在实际使用当中应用很广泛,可以减轻对服务器数据库的访问,提高运行速度。目前很多CMS内容管理系统中频繁使用缓存机制来提高系统运行的效率。

一个实用的PHP缓存实例相关推荐

  1. php缓存实例,一个PHP缓存类实例

    一个PHP缓存类实例 发布于 2014-08-05 21:44:28 | 104 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Preproce ...

  2. 读写锁ReadWriteLock和缓存实例

    读写锁:多个读锁不互斥,读锁与写锁互斥,写锁与写锁互斥.即:读的时候不允许写,写的时候不允许读,可以同时读. synchronized关键字和普通的Lock构造的锁,会造成读与读之间的互斥,因此读写锁 ...

  3. LruCache:从网络加载图片缓存实例

    OOM异常 堆内存用于存储实例对象,当程序不断创建对象,并且对象都有引用指向,那么垃圾回收机制就不会清理这些对象,当对象多到挤满堆内存的上限后,就产生OOM异常.Android系统为每个应用程序使用的 ...

  4. php文件缓存代码,php文件缓存实例代码

    php教程文件缓存实例代码 缓存在实际使用当中应用很广泛,可以减轻对服务器数据库教程的访问,提高运行速度.目前很多cms内容管理系统中频繁使用缓存机制来提高系统运行的效率 cache.php 代码如下 ...

  5. php创建一个类,JavaScript_创建一个类Person的简单实例,创建一个类Person,包含以下属 - phpStudy...

    创建一个类Person的简单实例 创建一个类Person,包含以下属性:姓名(name).年龄(age).朋友(friends数组).问候(sayhi方法,输出问候语,例如:"你好!&quo ...

  6. 初学C#和MVC的一些心得,弯路,总结,还有教训(4)--Cache 关于创建多个缓存实例

    asp.net中的数据缓存可以用 HttpRuntime.Cache ,这个是大家都知道的,但如果缓存的数据比较多,又比较杂乱,想要把缓存分开管理(也就是创建多个缓存实例)应该怎么做呢... 于是常规 ...

  7. 使用redis实现缓存_用下一个js实现一个简单的redis缓存

    使用redis实现缓存 For most websites, the changing pieces don't actually vary that often. That immutability ...

  8. 如何做一个“实用”的图像数据集

    目录 引言 一.探究数据的"用途" 二.梳理专业的"知识" 三.数据与知识"迭代" 四.确定性能的"指标" 五.总结 鸣 ...

  9. 20条非常实用的Python代码实例

    据说Python之父-Guido Van Rossum打算让CPython更快,速度直接翻五倍,这是实实在在的好消息.Python一直以来被诟病速度慢,影响开发效率,希望这次Guido老爷子能帮pyt ...

最新文章

  1. mysql event 学习
  2. 将SQL中数据输出到Excel中
  3. python下载url_三种Python下载url并保存文件的代码详解
  4. C++之顺序性容器vector、list、deque的push_back、pop_back、push_front、pop_front、插入(insert)和删除(erase)通用操作及其变形
  5. java三角函数计算器_java实现多功能科学计算器(包括进制转换,三角函数,四则运算等)...
  6. ET大脑加速落地,阿里云闯入“互联网+”深水区
  7. VS2012配置WTL
  8. gitlab使用教程详细
  9. CAD图纸的缩放——范围缩放
  10. 单月销量破万台,FITURE治好了健身镜的“水土不服”?
  11. 计算机的按cpu分类,英特尔处理器分类有哪些 英特尔处理器分类详解
  12. CorAl – Are the point clouds Correctly Aligned?
  13. 肝胆疾病的生物化学检验
  14. RTMP转HTTP-FLV视频流web端应用流程记录
  15. 【Codevs1422】【网络流】河城荷取
  16. 【空间统计之六】点数据集方向分布统计(标准差椭圆)
  17. 一只喵的西行记-11 与大叔小萝莉的不打不相识
  18. Android给文件改后缀名
  19. 我希望用Java拥有的十大锡兰语言功能
  20. Shor’s algorithm

热门文章

  1. Linux移植之auto.conf、autoconf.h、Mach-types.h的生成过程简析
  2. 【转载】 java根据ip地址获取详细地域信息
  3. 一维数组的求平均成绩 Day06
  4. C#验证子网掩码的正确性
  5. javascript 之clientHeight、scrollHeight、offsetHeight
  6. 某云数据中心网络解决方案(分享二十一)
  7. Linux下如何生成core dump 文件(解决segment fault段错误的问题)
  8. java异常及日志注意事项
  9. lombok使用中出现继承关系的对象时,出现的问题及解决办法
  10. k8s启动Pod遇到CrashLoopBackOff的解决方法