自己写的缓存
来源:互联网 发布:flume采集mysql数据库 编辑:程序博客网 时间:2024/05/29 04:47
classFCache{protected $endTime=360;//缓存保存时间(秒)protected $fileTime=360;//缓存保存时间(秒)public $rootDir='../filecache/wap';//主目录地址publicfunction__construct(){ ob_start(); }/** * set設置一致key 修改键名的值 *@param string $key 键名 *@param string $value 键值 *@param int $timeLife 生命周期 *@param int $target 是否为pc目录 true pc端 false wap端 */publicfunctionset($key, $value,$target=null){ ob_start();if($target){$this->rootDir='./filecache/pc'; } $retMes=$this->saveDir($value,$key);return $retMes; } /** * 保存文件 */publicfunctionsaveDir($data,$dirName){if($data!==null && $dirName!==null){ $fileDir=$this->rootDir.'/'.Yii::app()->controller->id.'/';if(!is_dir($fileDir)){ mkdir($fileDir,0777,true); } $dir=$fileDir.$dirName.'.html';//静态 URL 文件名if(file_exists($dir) && filemtime($dir)>time()){ file_get_contents($dir); }else{ file_put_contents($dir,$data); } return $fileDir; } } /** * 清空所有缓存文件 *@param $path 主目录 * @param $target 目录主文件夹 * @return bool */publicfunctionemptyCache($path=null){ $target=Yii::app()->params['FCachePath'];if(!file_exists($target))returnfalse;if($path) $target=$path; $handle = opendir($target); $op = dir($target); while(false != ($item = $op->read())) { if($item == '.' || $item == '..') { continue; }elseif(is_dir($op->path.'/'.$item)) { $this->emptyCache($op->path.'/'.$item); } else { unlink($op->path.'/'.$item); } $op = dir($target); } closedir($handle); return rmdir($target) ; } /** * 读取文件 */publicfunctionreadDir($dirName,$target=null){if($target){$this->rootDir='./filecache/pc'; } if(Yii::app()->controller->id=='project'){$this->ChangePStatus($this->rootDir); } if($dirName!==null){ $fileDir=$this->rootDir.'/'.Yii::app()->controller->id.'/'.$dirName.'.html';if(file_exists($fileDir)){if((Yii::app()->controller->id=='project' && filemtime($fileDir)+$this->endTime*30<time())|| filemtime($fileDir)+$this->fileTime*360<time()){ unlink($fileDir); $data=false; }else{ $data=true; } }else{ $data=false; } }else{ $data=false; } return $data; } /** * 读取文件时的判断 */protectedfunctionChangePStatus($path){ $p_id=isset($_GET['id'])?$_GET['id']:''; $model=ProjectModel::model()->findByPk($p_id); $file_url=$path.'/'.Yii::app()->controller->id.'/'.$this->md5($p_id).'.html';if($model->attributes['status']==ProjectModel::STATUS_SELL && file_exists($file_url)){ unlink($file_url); } } /** * 跳转地址 */publicfunctionreadUrl($dirName){if($dirName!==null){ $fileDir=$this->rootDir.'/'.Yii::app()->controller->id.'/'.$dirName.'.html';if(file_exists($fileDir)){return file_get_contents($fileDir); } } } /** * 当前文件名 */publicfunctionfilename(){ $url = $_SERVER['REQUEST_URI']; $filename=explode('/',$url); $filename=end($filename); $filename=$filename?explode($filename,'.'):'index'; $filename=$this->md5($filename[0]);if(isset($_GET['id'])){ $p_id=$_GET['id']; $model=ProjectModel::model()->findByPk($p_id); if($model->attributes['status']==ProjectModel::STATUS_SELL){ $filename=$this->md5($p_id.ProjectModel::STATUS_SELL); }else{ $filename=$this->md5($p_id); } } return $filename; } /** * 文件名加密 */publicstaticfunctionmd5($name){ $string='fenjinshe';if($name){return md5(md5($name).$string); } } /** * 时间间隔删除缓存 */// public function TimeClean(){// ignore_user_abort(true);// @set_time_limit(0);// session_write_close();// while(true){// $this->emptyCache();// sleep(2);// }//// }}
0 0
- 自己写的缓存
- 自己写的缓存类,备份
- 自己写的一个缓存类(依赖于XML)
- asp.net 自己写的一个序列化缓存类
- 写自己的缓存框架,JAD-CACHE架构设计篇
- 自己写Android图片缓存框架之一级内存缓存
- 自己写Android图片缓存框架之二级disk缓存
- 自己写的一个有点不同的分页组件,缓存三页的分页组件
- 无奈自己写了一个简单的JDBC查询缓存,分享一下
- 写自己的rss
- 写自己的rss
- 自己写的sqlhelper
- 自己写的strcmp
- 自己写的一首诗
- 写自己的软件
- 写自己的rss
- 写个自己的
- 自己写的采集
- [dfs树 神奇思路] Codeforces 730K NEERC16 Southern Subregional K. Roads Orientation Problem
- 函数的返回值和临时对象的问题
- [OpenGL]从零开始写一个Android平台下的全景视频播放器——5.1 使用OpenGL把全景视频贴到球上
- 汇编语言实现小写转为大写
- URL请求后台获取不到特殊字符的参数
- 自己写的缓存
- svm——(二)
- 欧拉函数一个神奇性质
- mysql 创建带解释的表,给表和字段加注释
- 框架内容填充之medoo数据类
- PHP中session变量的销毁
- 友元函数的来由和使用套路
- 新的开始
- 【js】将1-100之间的奇数存入数组