一个简单至极的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 相关文章推荐
关于时间计算的结总
Dec 06 PHP
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
Feb 16 PHP
php 伪造本地文件包含漏洞的代码
Nov 03 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
php随机显示图片的简单示例
Feb 15 PHP
php实现点击可刷新验证码
Nov 07 PHP
WordPress迁移时一些常见问题的解决方法整理
Nov 24 PHP
浅析Yii2 GridView实现下拉搜索教程
Apr 22 PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 PHP
thinkPHP中钩子的使用方法实例分析
Nov 16 PHP
Laravel框架实现的使用smtp发送邮件功能示例
Mar 12 PHP
php-7.3.6 编译安装过程
Feb 11 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的网址
2006/11/25 PHP
一些使用频率比较高的php函数
2008/10/03 PHP
php数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
php截取html字符串及自动补全html标签的方法
2015/01/15 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
ExtJS 入门
2010/10/29 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
2019/04/22 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
Python中逗号的三种作用实例分析
2015/06/08 Python
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
Python数据预处理之数据规范化(归一化)示例
2019/01/08 Python
深入理解Django-Signals信号量
2019/02/19 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
Python内置函数property()如何使用
2020/09/01 Python
经济管理专业求职信
2014/06/09 职场文书
餐饮周年庆活动方案
2014/08/14 职场文书
2014年采购部工作总结
2014/11/20 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript
nginx lua 操作 mysql
2022/05/15 Servers
JS前端使用canvas实现扩展物体类和事件派发
2022/08/05 Javascript