一个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面向对象全攻略 (二) 实例化对象 使用对象成员
Sep 30 PHP
php提示undefined index的几种解决方法
May 21 PHP
PHP正确解析UTF-8字符串技巧应用
Nov 07 PHP
PHP大批量插入数据库的3种方法和速度对比
Jul 08 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 PHP
PHP常用技术文之文件操作和目录操作总结
Sep 27 PHP
php计算2个日期的差值函数分享
Feb 02 PHP
PHP获取文件夹内文件数的方法
Mar 12 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 PHP
Zend Framework动作助手Url用法详解
Mar 05 PHP
PHP中的use关键字及文件的加载详解
Nov 28 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
Feb 10 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
解析php中array_merge与array+array的区别
2013/06/21 PHP
举例讲解PHP面对对象编程的多态
2015/08/12 PHP
PHP框架性能测试报告
2016/05/08 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
PHP的mysqli_set_charset()函数讲解
2019/01/23 PHP
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
jquery实现通用的内容渐显Tab选项卡效果
2015/09/07 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
Python yield 小结和实例
2014/04/25 Python
python正则表达式re模块详细介绍
2014/05/29 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
Python连接Redis的基本配置方法
2018/09/13 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
Python3 JSON编码解码方法详解
2019/09/06 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
python和JavaScript哪个容易上手
2020/06/23 Python
python集合能干吗
2020/07/19 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
社团活动策划书范文
2014/01/09 职场文书
房地产活动策划方案
2014/05/14 职场文书
会计专业求职信
2014/08/10 职场文书
2014年教务工作总结
2014/12/03 职场文书
本科毕业论文致谢怎么写
2015/05/14 职场文书
感恩教育观后感
2015/06/17 职场文书
Window server中安装Redis的超详细教程
2021/11/17 Redis