一个简单至极的PHP缓存类代码


Posted in PHP onOctober 23, 2015

网上关于 PHP 缓存类的资料很多,不过这个类应该是我见过功能满足需求,但又无比简洁的一个。废话不多说,直接看代码吧!
使用说明:
1、实例化
$cache = new Cache();
2、设置缓存时间和缓存目录
$cache = new Cache(60, '/any_other_path/');
第一个参数是缓存秒数,第二个参数是缓存路径,根据需要配置。
默认情况下,缓存时间是 3600 秒,缓存目录是 cache/
3、读取缓存
$value = $cache->get('data_key');
4、写入缓存
$value = $cache->put('data_key', 'data_value');
完整实例:

$cache = new Cache(); 
 
//从缓存从读取键值 $key 的数据 
$values = $cache->get($key); 
 
//如果没有缓存数据 
if ($values == false) { 
//insert code here... 
//写入键值 $key 的数据 
$cache->put($key, $values); 
} else { 
//insert code here... 
}

Cache.class.php

<?php 
class Cache { 
private $cache_path;//path for the cache 
private $cache_expire;//seconds that the cache expires 
 
//cache constructor, optional expiring time and cache path 
public function Cache($exp_time=3600,$path="cache/"){ 
$this->cache_expire=$exp_time; 
$this->cache_path=$path; 
} 
 
//returns the filename for the cache 
private function fileName($key){ 
return $this->cache_path.md5($key); 
} 
 
//creates new cache files with the given data, $key== name of the cache, data the info/values to store 
public function put($key, $data){ 
$values = serialize($data); 
$filename = $this->fileName($key); 
$file = fopen($filename, 'w'); 
if ($file){//able to create the file 
fwrite($file, $values); 
fclose($file); 
} 
else return false; 
} 
 
//returns cache for the given key 
public function get($key){ 
$filename = $this->fileName($key); 
if (!file_exists($filename) || !is_readable($filename)){//can't read the cache 
return false; 
} 
if ( time() < (filemtime($filename) + $this->cache_expire) ) {//cache for the key not expired 
$file = fopen($filename, "r");// read data file 
if ($file){//able to open the file 
$data = fread($file, filesize($filename)); 
fclose($file); 
return unserialize($data);//return the values 
} 
else return false; 
} 
else return false;//was expired you need to create new 
} 
} 
?>

相信大家一定会喜欢这个简洁的php缓存类代码,希望对大家的学习有所帮助。

PHP 相关文章推荐
在PHP中利用XML技术构造远程服务(上)
Oct 09 PHP
PHP设计聊天室步步通
Oct 09 PHP
PHP版国家代码、缩写查询函数代码
Aug 14 PHP
基于PHP选项与信息函数的使用详解
May 10 PHP
如何解决CI框架的Disallowed Key Characters错误提示
Jul 05 PHP
PHP自动重命名文件实现方法
Nov 04 PHP
php文件上传的两种实现方法
Apr 04 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
Jun 22 PHP
CodeIgniter框架数据库基本操作示例
May 24 PHP
php intval函数用法总结
Apr 14 PHP
在laravel框架中实现封装公共方法全局调用
Oct 14 PHP
laravel框架创建授权策略实例分析
Nov 22 PHP
10款实用的PHP开源工具
Oct 23 #PHP
PHP制作用户注册系统
Oct 23 #PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
Oct 23 #PHP
PHP中文竖排转换实现方法
Oct 23 #PHP
浅谈php7的重大新特性
Oct 23 #PHP
php数字每三位加逗号的功能函数
Oct 22 #PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
Oct 22 #PHP
You might like
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
Javascript 继承机制的实现
2009/08/12 Javascript
IE6下focus与blur错乱的解决方案
2011/07/31 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
JSON取值前判断
2014/12/23 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
JS中的三个循环小结
2017/06/20 Javascript
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
Python实现命令行通讯录实例教程
2016/08/18 Python
python 内置函数filter
2017/06/01 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
使用python批量转换文件编码为UTF-8的实现
2020/04/03 Python
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
三星印度官网:Samsung印度
2019/08/03 全球购物
优秀毕业生自荐信范文
2014/01/01 职场文书
运动会通讯稿200字
2014/02/16 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
支部书记四风对照材料
2014/08/28 职场文书
小学教研工作总结2015
2015/05/13 职场文书
房屋产权证明书
2015/06/19 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers