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


Posted in PHP onJune 09, 2011
<?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); 
} 
?>
PHP 相关文章推荐
PHP调用三种数据库的方法(3)
Oct 09 PHP
PHP详细彻底学习Smarty
Mar 27 PHP
php zend 相对路径问题
Jan 12 PHP
php 读取shell管道传输过来的内容
Mar 01 PHP
一些php项目中比较通用的php自建函数的详解
Jun 06 PHP
php中session退出登陆问题
Feb 27 PHP
php数组编码转换示例详解
Mar 11 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
Nov 12 PHP
PHP 获取ip地址代码汇总
Jul 05 PHP
PHP后台微信支付和支付宝支付开发
Apr 28 PHP
PHP微信企业号开发之回调模式开启与用法示例
Nov 25 PHP
php文件包含的几种方式总结
Sep 19 PHP
php下通过IP获取地理位置的代码(小偷程序)
Jun 09 #PHP
php 面试碰到过的问题 在此做下记录
Jun 09 #PHP
rephactor 优秀的PHP的重构工具
Jun 09 #PHP
php获取post中的json数据的实现方法
Jun 08 #PHP
常用的PHP数据库操作方法(MYSQL版)
Jun 08 #PHP
apache+php完美解决301重定向的两种方法
Jun 08 #PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
Jun 06 #PHP
You might like
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
jquery学习笔记之无new构建详解
2017/12/07 jQuery
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
JavaScript页面倒计时功能完整示例
2019/05/15 Javascript
Python字符串处理函数简明总结
2015/04/13 Python
Django中对数据查询结果进行排序的方法
2015/07/17 Python
在Django的通用视图中处理Context的方法
2015/07/21 Python
在mac下查找python包存放路径site-packages的实现方法
2018/11/06 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
让你相见恨晚的十个Python骚操作
2020/11/18 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
护理专业个人求职简历的自我评价
2013/10/13 职场文书
药学专业大学生个人的自我评价
2013/11/04 职场文书
《理想》教学反思
2014/02/17 职场文书
学校后勤岗位职责
2014/02/19 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
元旦主持词开场白
2015/05/29 职场文书
班主任培训研修日志
2015/11/13 职场文书
话题作文之自信作文
2019/11/15 职场文书
python代码实现备忘录案例讲解
2021/07/26 Python