<?php
/*
* 缓存类 cache
* 实 例:
include( "cache.php" ); $cache = new cache(30);
$cache->cacheCheck(); echo date("Y-m-d H:i:s"); $cache->caching();
*/
class cache {
//缓存目录
var $cacheRoot = "./cache/";
//缓存更新时间秒数,0为不缓存
var $cacheLimitTime = 0;
//缓存文件名
var $cacheFileName = "";
//缓存扩展名
var $cacheFileExt = "php"; /*
* 构造函数
* int $cacheLimitTime 缓存更新时间
*/
function cache( $cacheLimitTime ) {
if( intval( $cacheLimitTime ) )
$this->cacheLimitTime = $cacheLimitTime;
$this->cacheFileName = $this->getCacheFileName();
ob_start();
} /*
* 检查缓存文件是否在设置更新时间之内
* 返回:如果在更新时间之内则返回文件内容,反之则返回失败
*/
function cacheCheck(){
if( file_exists( $this->cacheFileName ) ) {
$cTime = $this->getFileCreateTime( $this->cacheFileName );
if( $cTime + $this->cacheLimitTime > time() ) {
echo file_get_contents( $this->cacheFileName );
ob_end_flush();
exit;
}
}
return false;
} /*
* 缓存文件或者输出静态
* string $staticFileName 静态文件名(含相对路径)
*/
function caching( $staticFileName = "" ){
if( $this->cacheFileName ) {
$cacheContent = ob_get_contents();
//echo $cacheContent;
ob_end_flush(); if( $staticFileName ) {
$this->saveFile( $staticFileName, $cacheContent );
} if( $this->cacheLimitTime )
$this->saveFile( $this->cacheFileName, $cacheContent );
}
} /*
* 清除缓存文件
* string $fileName 指定文件名(含函数)或者all(全部)
* 返回:清除成功返回true,反之返回false
*/
function clearCache( $fileName = "all" ) {
if( $fileName != "all" ) {
$fileName = $this->cacheRoot . strtoupper(md5($fileName)).".".$this->cacheFileExt;
if( file_exists( $fileName ) ) {
return @unlink( $fileName );
}else return false;
}
if ( is_dir( $this->cacheRoot ) ) {
if ( $dir = @opendir( $this->cacheRoot ) ) {
while ( $file = @readdir( $dir ) ) {
$check = is_dir( $file );
if ( !$check )
@unlink( $this->cacheRoot . $file );
}
@closedir( $dir );
return true;
}else{
return false;
}
}else{
return false;
}
} /*
* 根据当前动态文件生成缓存文件名
*/
function getCacheFileName() {
return $this->cacheRoot . strtoupper(md5($_SERVER["REQUEST_URI"])).".".$this->cacheFileExt;
} /*
* 缓存文件建立时间
* string $fileName 缓存文件名(含相对路径)
* 返回:文件生成时间秒数,文件不存在返回0
*/
function getFileCreateTime( $fileName ) {
if( ! trim($fileName) ) return 0; if( file_exists( $fileName ) ) {
return intval(filemtime( $fileName ));
}else return 0;
} /*
* 保存文件
* string $fileName 文件名(含相对路径)
* string $text 文件内容
* 返回:成功返回ture,失败返回false
*/
function saveFile($fileName, $text) {
if( ! $fileName || ! $text ) return false; if( $this->makeDir( dirname( $fileName ) ) ) {
if( $fp = fopen( $fileName, "w" ) ) {
if( @fwrite( $fp, $text ) ) {
fclose($fp);
return true;
}else {
fclose($fp);
return false;
}
}
}
return false;
} /*
* 连续建目录
* string $dir 目录字符串
* int $mode 权限数字
* 返回:顺利创建或者全部已建返回true,其它方式返回false
*/
function makeDir( $dir, $mode = "0777" ) {
if( ! $dir ) return 0;
$dir = str_replace( "\\", "/", $dir ); $mdir = "";
foreach( explode( "/", $dir ) as $val ) {
$mdir .= $val."/";
if( $val == ".." || $val == "." || trim( $val ) == "" ) continue; if( ! file_exists( $mdir ) ) {
if(!@mkdir( $mdir, $mode )){
return false;
}
}
}
return true;
}
}
?>

  

最新文章

  1. Oracle死锁
  2. linux和windows共享文件
  3. ural 1243. Divorce of the Seven Dwarfs
  4. PHP 错误与异常 笔记与总结(5)配置文件中与错误日志相关的选项 &amp;&amp; 将错误记录到指定的文件中
  5. HDU 5360 Hiking 登山 (优先队列,排序)
  6. LCS nlog(n) 但最坏情况还是比较悲剧 转载的文章;
  7. SharePoint 2010 修改默认列表样式
  8. codeforces #268 div2 D
  9. hdu3709 Balanced Number 数位DP
  10. 工作中对数组的一些处理,整理(结合underscore.js)
  11. 开发资源库(repositiory)
  12. SQL server 表信息查询
  13. 使用maven生成可执行jar包(包含依赖)
  14. IDEA搭建Spring Boot项目
  15. 关于Android屏幕的参数
  16. R语言之Random Forest随机森林
  17. LeetCode题解之Contains Duplicate II
  18. vue 中使用 screenfull.js 全屏插件
  19. 【数组】Minimum Size Subarray Sum
  20. 使用Razor视图引擎来生成邮件内容

热门文章

  1. ES6 — 箭头函数
  2. ZH奶酪:Python 中缀表达式转换后缀表达式
  3. Linux 下V4l2摄像头采集图片,实现yuyv转RGB,RGB转BMP,RGB伸缩,jpeglib 库实现压缩RGB到内存中,JPEG经UDP发送功(转)
  4. dkhadoop的自然语言处理技术介绍
  5. 【appium】根据id定位元素
  6. JS 获取时间
  7. MongoDB配置成系统服务(Win)
  8. 启动ECLIPSE时,提示failed to create the java virtual machine
  9. gcc gdb调试 &amp; 命令行带参 (一) ******
  10. [转]Windows服务“允许服务与桌面交互”的使用和修改方法