一个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+FLASH实现上传文件进度条相关文件 下载
Jul 21 PHP
PHP中文件上传的一个问题
Sep 04 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
Nov 14 PHP
php连接odbc数据源并保存与查询数据的方法
Dec 24 PHP
php实现简单文件下载的方法
Jan 30 PHP
为你总结一些php系统类函数
Oct 21 PHP
php 数组字符串搜索array_search技巧
Jul 05 PHP
浅谈thinkphp5 instance 的简单实现
Jul 30 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
Mar 27 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 PHP
Yii框架核心组件类实例详解
Aug 06 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读取目录所有文件信息dir示例
2014/03/18 PHP
php实现图片缩略图的方法
2016/03/29 PHP
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
jquery 分页控件实现代码
2009/11/30 Javascript
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
jQuery的context属性用法实例
2014/12/27 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
2017/01/13 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
Python3 模块、包调用&amp;路径详解
2017/10/25 Python
详解python实现线程安全的单例模式
2018/03/05 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
调试Django时打印SQL语句的日志代码实例
2019/09/12 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
移动端html5判断是否滚动到底部并且下拉加载
2019/11/19 HTML / CSS
毕业生简单求职信
2013/11/19 职场文书
致100米运动员广播稿
2014/02/14 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
公共场所标语
2014/06/30 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
导游词之珠海轮廓
2019/10/25 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript