一个PHP缓存类代码(附详细说明)

代码如下:

<?php
define('CACHE_ROOT', dirname(__FILE__).'/cache'); //缓存存放目录
define('CACHE_TIME', 1800);//缓存时间 单位秒
define('CACHE_FIX','.html');
$CacheName=md5($_SERVER['REQUEST_URI']).CACHE_FIX; //缓存文件名
$CacheDir=CACHE_ROOT.'/'.substr($CacheName,0,1);//缓存文件存放目录
$CacheUrl=$CacheDir.'/'.$CacheName;//缓存文件的完整路径
//GET方式请求才缓存,POST之后一般都希望看到最新的结果
if($_SERVER['REQUEST_METHOD']=='GET'){
//如果缓存文件存在,并且没有过期,就把它读出来。
if(file_exists($CacheName) && time()-filemtime($CacheName)<CACHE_TIME){
$fp=fopen($CacheName,'rb');
fpassthru($fp);
fclose($fp);
exit;
}
//判断文件夹是否存在,不存在则创建
elseif(!file_exists($CacheDir)){
if(!file_exists(CACHE_ROOT)){
mkdir(CACHE_ROOT,0777);
chmod(CACHE_ROOT,0777);
}
mkdir($CacheDir,0777);
chmod($CacheDir,0777);
}
//回调函数,当程序结束时自动调用此函数
function AutoCache($contents){
global $CacheUrl;
$fp=fopen($CacheUrl,'wb');
fwrite($fp,$contents);
fclose($fp);
chmod($CacheUrl,0777);
//生成新缓存的同时,自动删除所有的老缓存,以节约空间,可忽略。
//DelOldCache();
return $contents;
}
function DelOldCache(){
chdir(CACHE_ROOT);
foreach (glob("*/*".CACHE_FIX) as $file){
if(time()-filemtime($file)>CACHE_TIME)unlink($file);
}
}
//回调函数 auto_cache
ob_start('AutoCache');
}else{
//不是GET的请求就删除缓存文件。
if(file_exists($CacheUrl))unlink($CacheUrl);
}
?>

(0)

相关推荐

  • PHP实现的简单缓存类

    本文实例讲述了PHP实现的简单缓存类.分享给大家供大家参考.具体如下: cache.inc.php: <?php class Cache { /** * $dir : 缓存文件存放目录 * $lifetime : 缓存文件有效期,单位为秒 * $cacheid : 缓存文件路径,包含文件名 * $ext : 缓存文件扩展名(可以不用),这里使用是为了查看文件方便 */ private $dir; private $lifetime; private $cacheid; private $ext;

  • 常见php数据文件缓存类汇总

    本文实例汇总了常见php数据文件缓存类.分享给大家供大家参考.具体分析如下: 数据文件缓存的做法我们常用的有php文件缓存与利用memcache来缓存数据,下面面我分别总结了memcache缓存数据与数据文件缓存.感兴趣的朋友可以参考一下. 1.对于一般的变量,把该变量变成php语言的格式,写到文件中,用时只要include这个文件就相当于加载了cache了. 2.对于array型的变量,把array转化为php语言定义array的字符串,写到文件中,用时也只要include就相当于加载了cac

  • php文件缓存类用法实例分析

    本文实例讲述了php文件缓存类用法.分享给大家供大家参考.具体如下: <?php /** * 简单的文件缓存类 * */ class XZCache{ // default cache time one hour var $cache_time = 3600; // default cache dir var $cache_dir = './cache'; public function __construct($cache_dir=null, $cache_time=null){ $this-

  • 一个简洁实用的PHP缓存类完整实例

    本文完整描述了一个简洁实用的PHP缓存类,可用来检查缓存文件是否在设置更新时间之内.清除缓存文件.根据当前动态文件生成缓存文件名.连续创建目录.缓存文件输出静态等功能.对于采用PHP开发CMS系统来说,离不开对缓存的处理,合理利用好缓存可有效的提高程序执行效率. php缓存类文件完整代码如下: <?php /* * 缓存类 cache */ class cache { //缓存目录 var $cacheRoot = "./cache/"; //缓存更新时间秒数,0为不缓存 var

  • PHP文件缓存类示例分享

    复制代码 代码如下: <?php     /**      * @desc 文件缓存      */     class Cache{         const C_FILE = '/Runtime/';         private $dir = '';         const EXT = '.tpl';         private $filename = '';         public function __construct($dir = ''){            

  • php cache类代码(php数据缓存类)

    如果访问量大的话会给数据库造成很大的负担,所以对于变化不经常的内容要做好php 数据cache(缓存)是十分必要的,我做了一个简单的php"文件缓存"的类,希望对大家有所帮助. 思路是这样的: 对于一般的变量,把该变量变成php语言的格式,写到文件中,用时只要include这个文件就相当于加载了cache了: 对于array型的变量,把array转化为php语言定义array的字符串,写到文件中,用时也只要include就相当于加载了cache了: 缓存cache时间上的控制,通过获取

  • ThinkPHP文件缓存类代码分享

    取自ThinkPHP的文件缓存类代码,这里就不多废话了,小伙伴们自己看注释吧. <?php /** * @desc 文件缓存 */ class Cache{ const C_FILE = '/Runtime/'; private $dir = ''; const EXT = '.tpl'; private $filename = ''; public function __construct($dir = ''){ $this->dir = $dir; } /** * @desc 设置文件缓存

  • 简单的php缓存类分享 php缓存机制

    复制代码 代码如下: <?phpclass Cache { private $dir = "data/cache/";//定义缓存目录  private $key='c_a_sss'; // 文件名md5加密密钥 function set_dir($dirpath) {  $this->dir=$dirpath;  $this->make_dir($this->dir); } function read($key,$minutes=1) {  $filename

  • php文件缓存类汇总

    本文实例讲述了php的文件缓存类.分享给大家供大家参考.具体分析如下: 缓存类是我们开发应用中会常用使用到的功能,下面就来给大家整理几个php文件缓存类了,各个文件缓存类写法不同,但在性能上会有区别,有兴趣测试的朋友可测试一下这些缓存类. 例1 复制代码 代码如下: <?php $fzz = new fzz_cache; $fzz->kk = $_SERVER; //写入缓存 //$fzz->set("kk",$_SERVER,10000); //此方法不与类属性想冲

  • 一个PHP缓存类代码(附详细说明)

    复制代码 代码如下: <?php define('CACHE_ROOT', dirname(__FILE__).'/cache'); //缓存存放目录 define('CACHE_TIME', 1800);//缓存时间 单位秒 define('CACHE_FIX','.html'); $CacheName=md5($_SERVER['REQUEST_URI']).CACHE_FIX; //缓存文件名 $CacheDir=CACHE_ROOT.'/'.substr($CacheName,0,1);

  • 仿Aspnetpager的一个PHP分页类代码 附源码下载

    基本逻辑思路和.net的一样,就是将通过实体类来进行配置换成了通过数组进行配置,逻辑比较简单,根据条件判断拼接分页html. 有以下几个简单的功能: 1:支持相关按钮的显示与否配置 2:支持每页数目,文本名称,html标签类名称的自由配置 3:支持url重写过的页面(需自己在配置数组中添加重写规则) 简单吧,还是直接上代码: 核心代码:pager.class.php 复制代码 代码如下: <?php class pager{ //分页的参数配置 private $config=array( //

  • 功能齐全的PHP发送邮件类代码附详细说明

    <?php  class Email {  //---设置全局变量  var $mailTo = ""; // 收件人  var $mailCC = ""; // 抄送  var $mailBCC = ""; // 秘密抄送  var $mailFrom = ""; // 发件人  var $mailSubject = ""; // 主题  var $mailText = ""; 

  • 一个简单至极的PHP缓存类代码

    网上关于 PHP 缓存类的资料很多,不过这个类应该是我见过功能满足需求,但又无比简洁的一个.废话不多说,直接看代码吧! 使用说明: 1.实例化 $cache = new Cache(); 2.设置缓存时间和缓存目录 $cache = new Cache(60, '/any_other_path/'); 第一个参数是缓存秒数,第二个参数是缓存路径,根据需要配置. 默认情况下,缓存时间是 3600 秒,缓存目录是 cache/ 3.读取缓存 $value = $cache->get('data_ke

  • PHP 缓存实现代码及详细注释

    复制代码 代码如下: class CacheException extends Exception {} /** * 缓存抽象类 */ abstract class Cache_Abstract { /** * 读缓存变量 * * @param string $key 缓存下标 * @return mixed */ abstract public function fetch($key); /** * 缓存变量 * * @param string $key 缓存变量下标 * @param str

  • 功能不错的asp模板类代码附下载第1/4页

    此类支持循环替换,支持嵌套循环替换,支持多模板.  类的代码就不贴不来啰嗦了,在后面有下载,只贴出demo的代码. 一.模板只有一个循环块  模板文件主要代码  <head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>{myname}模板-{webName}</title>  </head>

  • jquery 多行滚动代码(附详细解释)

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu

  • 一个PHP验证码类代码分享(已封装成类)

    复制代码 代码如下: <?php session_start(); Header("Content-type: image/gif"); class SecurityCode { private $codes = ''; function __construct() { $code = '0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z'; $codeArray = explode('-

  • PHP 一个页面执行时间类代码

    核心代码 <?php class Timer//页面执行时间类 { var starttime;//页面开始执行时间 var stoptime;//页面结束执行时间 var spendtime;//页面执行花费时间 function getmicrotime()//获取返回当前微秒数的浮点数 { list(usec,sec)=explode(" ",microtime()); return ((float)usec + (float)sec); } function start(

随机推荐