php 文件缓存类
来源:互联网 发布:java filter过滤器 编辑:程序博客网 时间:2024/05/21 11:27
<?php//文件缓存类Class myfilecache {private $path;private static $instance;private function __construct($path){$this->path=$path;}public static function getobj($path){if(!self::$instance)self::$instance=new myfilecache($path);return self::$instance;}private function getFname($key,&$rfn){$fname=md5($key);$rfn=$this->path.$fname.'.php';}/**设置缓存 *参数: 键,值,缓存时间* 返回值:缓存文件大小*/public function set($key,$val,$exp=300){if(!is_numeric($exp)||empty($val))return false;$this->getFname($key,$rfn);$val=is_array($val)?json_encode($val):$val;$exp=sprintf("%09d",$exp);$val="<?php//".$exp.$val."?>";$num=file_put_contents($rfn, $val);return intval($num);}/**获取缓存 *参数: 键* 返回值:缓存内容*/public function get($key){$this->getFname($key,$rfn);$this->getcontent($rfn,$str);return $str;}private function getcontent($fname,&$str,$len=9){$hl=fopen($fname,'r');if($hl){$mtime=filemtime($fname);$exp1=fread($hl,$len+7);$exp1=substr($exp1,7);$exp1=intval($exp1);$exp2=$mtime+$exp1;if(time()>$exp2){fclose($hl);unlink($fname);return false;}else{$str=fread($hl,filesize($fname));$str=substr($str,0,-2);fclose($hl);}}}}?>
实例:
<?php error_reporting(0); require_once 'myfilecache.php'; define('FC_PATH', '/data/htdocs/php_test/tp/cache/');function tset(){ fc_init($fc); var_dump($fc->set('k1','v1',10)); } function tget() { fc_init($fc); var_dump($fc->get('k1')); } function fc_init(&$fc){$cpath=FC_PATH;if(!is_dir($cpath))$rs=mkdir($cpath,0777,true);$fc=myfilecache::getobj($cpath);} $a=$_GET['a']?$_GET['a']:'tget'; $a(); ?>
http://*****/tp/t.php?a=tset
int(20)
http://*****/tp/t.php
string(2) "v1"
文件内容:
[root@EM-6CU4525EOH cache]# more b637b17af08aced8850c18cccde915da.php <?php//000000010v1?>
0 0
- php文件缓存类
- php文件缓存类
- php 文件缓存类
- PHP文件缓存类
- php实现文件缓存类
- PHP缓存之文件缓存
- PHP文件缓存类(serialize)
- 一个PHP简单文件缓存类
- 我的PHP文件缓存类
- PHP高效文件缓存类FCache
- 简单高效的 PHP 文件缓存类
- 初识PHP文件缓存
- 谈PHP文件缓存
- php文件缓存数据
- php文件缓存
- PHP文件缓存secache
- php 文件缓存
- php文件缓存数据
- Day10(下).面向对象编程强化
- 泛型之中的通配符(Wildcards)使用
- MySQL can’t specify target table for update in FROM clause
- Extjs4 grid相关配置以及应用
- Spring MVC 定时器分析例子
- php 文件缓存类
- Google 镜像站搜集
- JSP-MVC初学小结-记录
- Camera Binning Mode
- ormlite 排序
- Android开发之HttpURLConnection
- 【java基础】——java面向对象(下)—多态、内部类、异常、包
- 如何启动/停止/重启MySQL
- ACD.Systems.Canvas.with.GIS.v14.0.1618 1CD(矢量绘图软件)