下面的一段代码是,把数据写入缓存和读取缓存数据,然后给缓存一个时间,在缓存生存时间内,我们使用缓存的数据,否则更新缓存。
<?php
class File{private $_dir;
public function __construct(){
//dirname(__FILE__)当前目录
$this->_dir=dirname(__FILE__);
}
const EXT ='.txt';
public function cacheData($key,$value ='',$cacheTime = 0){
$filename =$this->_dir."/".$key.self::EXT;
echo $filename;
if ($value!==''){ //将value写入缓存
//如果value是null,那么把缓存删掉。
if (is_null($value)){
return @unlink($filename);
}
$dir =dir($filename);
if (!is_dir($dir))
{
mkdir($dir,0777);
}
//处理缓存时间,这里我们要设置缓存时间的长度,因为要截取缓存时间用
$cacheTime =sprintf("%011d",$cacheTime);
//转换成字符串的形式。
return file_put_contents($filename, $cacheTime.json_encode($value));
}
//获取缓存
if (is_file($filename)){
return false;
}
$contents = file_get_contents($filename);
$cacheTime = substr($contents, 0,11);
$value = substr($contents, 11);
if ($cacheTime+filemtime($filename) > time()){
//如果缓存时间过期,从数据库中组织数据,写入缓存中。
}
return json_decode($value,true);
}
}