首页 后端开发 php教程 Cache类的源码分析_PHP

Cache类的源码分析_PHP

Jun 01, 2016 pm 12:30 PM
cache file if 分析 文件 源码

Cache类的源码分析

一个Cache类的源码分析,学习Cache的人可以参考下

/*
用户需要事先定义的常量:
_CachePath_        模板缓存路径
_CacheEnable_        自动缓存机制是否开启,未定义或为空,表示关闭自动缓存机制
_ReCacheTime_        自动重新缓存间隔时间,单位为秒,未定义或为空,表示关闭自动重新缓存
_ActionVar_        Action的GET变量

Sample:
$cache=new cache();
if ($cache->check()) {
        $template=$cache->read();
}else {
        ......
        $cache->write($template);
}
eval('echo $template;');
*/

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 file_get_contents($file);
        else return false;
}

//生成Cache
function write($output) {
        //返回当前页的Cache
        $file=_CachePath_."/".$this->cachefile;
        //如果Cache功能开启
        if (_CacheEnable_) {
                //把输出的内容写入Cache文件
                $fp=@fopen($file,'w');
                if (!@fwrite($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);
                }
        }
}

}


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

夸克网盘的文件怎么转移到百度网盘? 夸克网盘的文件怎么转移到百度网盘? Mar 14, 2024 pm 02:07 PM

  夸克网盘和百度网盘都是现在最常用的储存文件的网盘软件,如果想要将夸克网盘内的文件保存到百度网盘,要怎么操作呢?本期小编整理了夸克网盘电脑端的文件转移到百度网盘的教程步骤,一起来看看是怎么操作吧。  夸克网盘的文件怎么保存到百度网盘?要将夸克网盘的文件转移到百度网盘,首先需在夸克网盘下载所需文件,然后在百度网盘客户端中选择目标文件夹并打开。接着,将夸克网盘中下载的文件拖放到百度网盘客户端打开的文件夹中,或者使用上传功能将文件添加至百度网盘。确保上传完成后在百度网盘中查看文件是否成功转移。这样就

出现0x80004005错误代码怎么办 小编教你0x80004005错误代码解决方法 出现0x80004005错误代码怎么办 小编教你0x80004005错误代码解决方法 Mar 21, 2024 pm 09:17 PM

在电脑中删除或解压缩文件夹,时有时候会弹出提示对话框“错误0x80004005:未指定错误”,如果遇到这中情况应该怎么解决呢?提示错误代码0x80004005的原因其实有很多,但大部分因为病毒导致,我们可以重新注册dll来解决问题,下面,小编给大伙讲解0x80004005错误代码处理经验。有用户在使用电脑时出现错误代码0X80004005的提示,0x80004005错误主要是由于计算机没有正确注册某些动态链接库文件,或者计算机与Internet之间存在不允许的HTTPS连接防火墙所引起。那么如何

hiberfil.sys是什么文件?hiberfil.sys可以删除吗? hiberfil.sys是什么文件?hiberfil.sys可以删除吗? Mar 15, 2024 am 09:49 AM

  最近有很多网友问小编,hiberfil.sys是什么文件?hiberfil.sys占用了大量的C盘空间可以删除吗?小编可以告诉大家hiberfil.sys文件是可以删除的。下面就来看看详细的内容。hiberfil.sys是Windows系统中的一个隐藏文件,也是系统休眠文件。通常存储在C盘根目录下,其大小与系统安装内存大小相当。这个文件在计算机休眠时被使用,其中包含了当前系统的内存数据,以便在恢复时快速恢复到之前的状态。由于其大小与内存容量相等,因此它可能会占用较大的硬盘空间。  hiber

c语言if判断多个条件怎么写 c语言if判断多个条件怎么写 Mar 25, 2024 pm 03:24 PM

在C语言中,if语句通常用于基于单个条件执行特定代码块。但是,通过使用逻辑运算符(如 &&、|| 和 !),可以组合多个条件来进行判断。包括使用逻辑与(&&)判断多个条件、使用逻辑或(||)判断至少一个条件、使用逻辑非(!)判断单个条件的否定,以及嵌套if语句和使用括号明确优先级。

Linux系统查看log日志命令详解! Linux系统查看log日志命令详解! Mar 06, 2024 pm 03:55 PM

在Linux系统中,可以使用以下命令来查看日志文件的内容:tail命令:tail命令用于显示日志文件的末尾内容。它是查看最新日志信息的常用命令。tail[选项][文件名]常用的选项包括:-n:指定要显示的行数,默认为10行。-f:实时监视文件内容,并在文件更新时自动显示新的内容。示例:tail-n20logfile.txt#显示logfile.txt文件的最后20行内容tail-flogfile.txt#实时监视logfile.txt文件的更新内容head命令:head命令用于显示日志文件的开头

MySQL中.ibd文件的作用详解及相关注意事项 MySQL中.ibd文件的作用详解及相关注意事项 Mar 15, 2024 am 08:00 AM

MySQL中.ibd文件的作用详解及相关注意事项MySQL是一种流行的关系型数据库管理系统,数据库中的数据存储在不同的文件中。其中,.ibd文件是InnoDB存储引擎中的数据文件,用于存储表中的数据和索引。本文将对MySQL中.ibd文件的作用进行详细解析,并提供相关代码示例以帮助读者更好地理解。一、.ibd文件的作用:存储数据:.ibd文件是InnoDB存

创建和运行Linux'.a”文件 创建和运行Linux'.a”文件 Mar 20, 2024 pm 04:46 PM

在Linux操作系统中处理文件需要使用各种命令和技术,使开发人员能够高效地创建和执行文件、代码、程序、脚本和其他东西。在Linux环境中,扩展名为”.a”的文件作为静态库具有重要的重要性。这些库在软件开发中发挥着重要作用,允许开发人员有效地管理和共享多个程序的公共功能。对于Linux环境中的有效软件开发,了解如何创建和运行“.a”文件至关重要。本文将介绍如何全面安装和配置Linux“.a”文件,让我们一起探索Linux“.a”文件的定义、用途、结构,以及创建和执行它的方法。什么是L

织梦CMS二级目录打不开的原因分析 织梦CMS二级目录打不开的原因分析 Mar 13, 2024 pm 06:24 PM

标题:解析织梦CMS二级目录打不开的原因及解决方案织梦CMS(DedeCMS)是一款功能强大的开源内容管理系统,被广泛应用于各类网站建设中。然而,有时候在搭建网站过程中可能会遇到二级目录无法打开的情况,这给网站的正常运行带来了困扰。在本文中,我们将分析二级目录打不开的可能原因,并提供具体的代码示例来解决这一问题。一、可能的原因分析:伪静态规则配置问题:在使用

See all articles