一个简单至极的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编程开发“虚拟域名”系统
Oct 09 PHP
PHP小程序自动提交到自助友情连接
Nov 24 PHP
php中autoload的用法总结
Nov 08 PHP
一个php生成16位随机数的代码(两种方法)
Sep 16 PHP
php基本函数汇总
Jul 09 PHP
PHP在线书签系统分享
Jan 04 PHP
php脚本运行时的超时机制详解
Feb 17 PHP
详谈PHP程序Laravel 5框架的优化技巧
Jul 18 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
Jul 21 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
Dec 15 PHP
PHP使用strrev翻转中文乱码问题的解决方法
Jan 13 PHP
php基于自定义函数记录log日志方法
Jul 21 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
一些花式咖啡的配方
2021/03/03 冲泡冲煮
PHP之预定义接口详解
2015/07/29 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
jQuery 使用个人心得
2009/02/26 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
关于锚点跳转及jQuery下相关操作与插件
2012/10/01 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
JavaScript替换当前页面的方法
2015/04/03 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
javascript实现拖拽碰撞检测
2020/03/12 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
Python输入二维数组方法
2018/04/13 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
浅谈python 中类属性共享的问题
2019/07/02 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
python groupby 函数 as_index详解
2019/12/16 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
出售房屋委托书范本
2014/09/24 职场文书
高考升学宴答谢词
2015/01/20 职场文书
管辖权异议上诉状
2015/05/23 职场文书
灵魂歌王观后感
2015/06/17 职场文书
Python一行代码实现自动发邮件功能
2021/05/30 Python
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL