php模块<?php
/*##################################################
# 模块功能:缓存操作
###################################################*/
class Cache {
/**
* $dir : 缓存文件存放目录
* $lifetime : 缓存文件有效期,单位为秒
* $cacheid : 缓存文件路径,包含文件名
* $ext : 缓存文件扩展名(可以不用),这里使用是为了查看文件方便
*/
private $dir;
private $lifetime;
private $cacheid;
private $ext;
/**
* 析构函数,检查缓存目录是否有效,默认赋值
*/
function __construct($dir='',$lifetime=1800,$ext='') {
if ($this->dir_isvalid($dir)) {
$this->dir = $dir;//缓存文件存放目录
$this->lifetime = $lifetime; //缓存文件有效期,单位为秒
$this->ext = $ext;//缓存文件扩展名(可以不用),这里使用是为了查看文件方便
$this->cacheid = $this->getcacheid();
}
}
/**
* 检查缓存是否有效
*/
private function isvalid() {
if (!file_exists($this->cacheid)) return false;
if (!(@$mtime = filemtime($this->cacheid))) return false;
if (time() - $mtime > $this->lifetime) return false;
return true;
}
/**
* 写入缓存
* $mode == 0 , 以浏览器缓存的方式取得页面内容
* $mode == 1 , 以直接赋值(通过$content参数接收)的方式取得页面内容
* $mode == 2 , 以本地读取(fopen ile_get_contents)的方式取得页面内容(似乎这种方式没什么必要)
*/
public function write($mode=0,$content='') {
switch ($mode) {
case 0:
$content = ob_get_contents();
break;
default:
break;
}
ob_end_flush();
try {
file_put_contents($this->cacheid,$content);
}
catch (Exception $e) {
$this->error('写入缓存失败!请检查目录权限!');
}
}
/**
* 加载缓存
* exit() 载入缓存后终止原页面程序的执行,缓存无效则运行原页面程序生成缓存
* ob_start() 开启浏览器缓存用于在页面结尾处取得页面内容
*/
public function load() {
if ($this->isvalid()) { //检测缓存文件是否有效
//echo "<span style='display:none;'>This is Cache.</span> ";
//以下两种方式,哪种方式好?????
require_once($this->cacheid); //有效则输出缓存
//echo file_get_contents($this->cacheid);
exit(); //载入缓存后终止原页面程序的执行,缓存无效则运行原页面程序生成缓存
}else { //不然就打开缓冲区
ob_start();
}
}
/**
* 清除缓存
*/
public function clean() {
try {
unlink($this->cacheid);
}
catch (Exception $e) {
$this->error('清除缓存文件失败!请检查目录权限!');
}
}
/**
* 取得缓存文件路径
*/
private function getcacheid() {
return $this->dir.md5($this->geturl()).$this->ext;
}
/**
* 检查目录是否存在或是否可创建
*/
private function dir_isvalid($dir) {
if (is_dir($dir)) return true;
try {
mkdir($dir,0777);
}
catch (Exception $e) {
$this->error('所设定缓存目录不存在并且创建失败!请检查目录权限!');
return false;
}
return true;
}
/**
* 取得当前页面完整url
*/
private function geturl() {
$url = '';
if (isset($_SERVER['REQUEST_URI'])) {
$url = $_SERVER['REQUEST_URI'];
}
else {
$url = $_SERVER['Php_SELF'];
$url .= empty($_SERVER['QUERY_STRING'])?'':'?'.$_SERVER['QUERY_STRING'];
}
return $url;
}
/**
* 输出错误信息
*/
private function error($str) {
echo '<div style="color:red;">'.$str.'</div>';
}
}
?>
加载缓存检测缓存文件是否有效$cache_time = 3600;
$cachedir = '../cache/';
$cache = new Cache($cachedir, $cache_time, '.js');
$cache->load();写入缓存* $mode == 0 , 以浏览器缓存的方式取得页面内容* $mode == 1 , 以直接赋值(通过$content参数接收)的方式取得页面内容* $mode == 2 , 以本地读取(fopen ile_get_contents)的方式取得页面内容(似乎这种方式没什么必要)$cache->write(1, $datainfo); //$datainfo 为写入的数据删除空文件夹函数//清空文件夹函数和清空文件夹后删除空文件夹函数的处理
function deldir($path){
//如果是目录则继续
if(is_dir($path)){
//扫描一个文件夹内的所有文件夹和文件并返回数组
$p = scandir($path);
foreach($p as $val){
//排除目录中的.和..
if($val !="." && $val !=".."){
//如果是目录则递归子目录,继续操作
if(is_dir($path.$val)){
//子目录中操作删除文件夹和文件
deldir($path.$val.'/');
//目录清空后删除空文件夹
@rmdir($path.$val.'/');
} else{
//如果是文件直接删除
unlink($path.$val);
}
}
}
return true;
}
} deldir('../cache/')
评论
8条评论84745445 Lv.1
Chrome 86.0.4240.198
Windows 回复
不错不错,味道好极了
广东省广州市 电信
wjt246932 Lv.1
Chrome 86.0.4240.198
Windows 回复
中国 移动
腾讯视频 Lv.3
Chrome 94.0.4606.71
Windows 回复
甘肃省兰州市 电信
腾讯视频 Lv.3
Chrome 86.0.4240.198
Windows 7 x64 Edition 回复
看看
中国 移动
w770340211 Lv.3
Chrome 69.0.3947.100
Windows 回复
北京市 移动
有人我工 Lv.1 回复
来看看了
山东省烟台市 联通
vivianna Lv.1
Chrome 89.0.4389.90
Windows 回复
广东省汕尾市陆丰县 移动
玫瑰 Lv.1
Chrome 86.0.4240.198
Windows 回复
不错,支持一下
河南省南阳市 联通