PHP实现静态缓存生成,获取缓存,删除缓存

作者:Liaodeity - 2015年04月10日

    这是一个PHP简单缓存类,可以进行生成缓存,获取缓存,删除缓存。可以设置缓存时间。可以用于一些平时项目开发中,需要短暂存储缓存文件的操作,我把重要的地方都加了注释,方便新手可以清楚的知道是怎么的实现原理。可以让自己快速的掌握PHP的一些基本的缓存处理思维。

<?php
/**
 * PHP文件缓存操作
 * 生成缓存cacheData('test',array(1,2,3))
 * 获取缓存cacheData('test')
 * 删除缓存cacheData('test',null)
 */
class File {
	private $_dir;/*文件路径*/

	const EXT = '.txt';/*缓存后缀名*/

	public function __construct() {
		$this->_dir = dirname(__FILE__) . '/cache/';
	}
	/**
	 * [cacheData 缓存操作,生成缓存,获取缓存,删除缓存]
	 * @param  [type]  $key       [缓存文件名称]
	 * @param  string  $value     [缓存数据]
	 * @param  integer $cacheTime [缓存存活时间]
	 * @return [type]             [description]
	 */
	public function cacheData($key, $value = '', $cacheTime = 0) {
		$filename = $this->_dir  . $key . self::EXT;

		if($value !== '') {  /*将value值写入缓存*/
			if(is_null($value)) {/*如果传值为null,清除缓存*/
				return @unlink($filename);
			}
			$dir = dirname($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 = (int)substr($contents, 0 ,11);/*缓存时间*/
		$value = substr($contents, 11);/*缓存数据*/
		if($cacheTime !=0 && ($cacheTime + filemtime($filename) < time())) {/*判读缓存时候过期*/
			unlink($filename);
			return FALSE;
		}
		return json_decode($value, true);
		
	}
}

$file = new File();
$arr = array(1,2,3);
// echo $file->cacheData('test',$arr,8);

// var_dump($file->cacheData('test'));


本文作者: Liaodeity

本文链接: https://www.jianbaizhan.com/article/257

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!


 请勿发布不友善或者负能量的内容。审查将对发布广告等违规信息进行处罚!