PHP微信开发用Cache 解决数据缓存


Posted in PHP onJuly 11, 2016

用php进行微信开发时,碰到access_token长久保存的问题,以前都是用框架里的Cache直接set、get一下就完了。现在没框架可用了,只好自己动手写一个cache暂时用。

这个Cache类用来缓存一些具有时效性的数据,比如微信基础接口的access_token、网页Auth验证的access_token等

下面的代码使用本地文件进行数据的缓存,

//测试
 $cache = new Cache();
 $cache->dir = "../cc/";
 //$cache->setCache("zhang", "zhangsan", 100);
 echo $cache->getCache("zhang");
 //$cache->removeCache("zhang");
 
 $cache->setCache("liu", "liuqi", 100);
 echo $cache->getCache("liu");

 class Cache{
 public $cacheFile = "cache.json"; //文件
 public $dir = "./cach2/"; //目录

 //缓存
 public function setCache($name, $val, $expires_time){
 $file = $this->hasFile();
 //字符串转数组
 $str = file_get_contents($file);
 $arr = json_decode($str, true);
 
 //值为空,则移除该缓存
 if(empty($val)){
 unset($arr[$name]);
 }else{
 $arr[$name] = array("value"=>$val, "expires_time"=>$expires_time, "add_time"=>time());
 } 
 //数组转字符串
 $str = json_encode($arr);
 file_put_contents($file, $str);
 }
 public function getCache($name){
 $file = $this->hasFile();
 
 //字符串转数组
 $allArr = json_decode($str, true);
 $arr = $allArr[$name];

 if(!$arr || time() > ($arr["expires_time"] + $arr["add_time"])){
 $this->removeCache($name); //过期移除
 return false;
 }
 return $arr["value"];
 }
 public function removeCache($name){
 $this->setCache($name, '', 0);
 }
 
 private function hasFile(){
 //如果不存在缓存文件,则创建一个
 if(!file_exists($this->dir)){
 mkdir($this->dir);
 }
 if(!file_exists($this->dir . $this->cacheFile)){
 touch($this->dir . $this->cacheFile);
 }
 return $this->dir . $this->cacheFile;
 }
}

上面的Cache类共有set、get、remove三种操作。另外还可以自定义缓存文件的保存路径,只要设置Cache的dir属性就可以了。

          以上就是PHP 微信开发时数据缓存的方法,希望对大家的学习有所帮助.

PHP 相关文章推荐
PHP环境搭建最新方法
Sep 05 PHP
php合并数组array_merge函数运算符加号与的区别
Oct 31 PHP
php下使用SimpleXML 处理XML 文件
Feb 27 PHP
php木马webshell扫描器代码
Jan 25 PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 PHP
php生成圆角图片的方法
Apr 07 PHP
PHP+MySQL之Insert Into数据插入用法分析
Sep 27 PHP
Laravel 5.3 学习笔记之 错误&日志
Aug 28 PHP
PHP微商城开源代码实例
Mar 27 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 PHP
为你的 Laravel 验证器加上多验证场景的实现
Apr 07 PHP
php array_map()函数实例用法
Mar 03 PHP
php使用escapeshellarg时中文被过滤的解决方法
Jul 10 #PHP
[原创]smarty简单模板变量输出方法
Jul 09 #PHP
[原创]php简单防盗链验证实现方法
Jul 09 #PHP
[原创]php简单隔行变色功能实现代码
Jul 09 #PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
Jul 09 #PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
Jul 09 #PHP
Centos PHP 扩展Xchche的安装教程
Jul 09 #PHP
You might like
中篇:安装及配置PHP
2006/12/13 PHP
精通php的十大要点(上)
2009/02/04 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
javascript动态添加删除tabs标签的方法
2015/07/06 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
jQuery对象与DOM对象转换方法详解
2016/05/10 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
JS中传递参数的几种不同方法比较
2017/01/20 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
Python3 处理JSON的实例详解
2017/10/29 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
python元组的概念知识点
2019/11/19 Python
基于Django实现日志记录报错信息
2019/12/17 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
社区反邪教工作方案
2014/06/16 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
学校四风对照检查材料
2014/08/28 职场文书
法人授权委托书
2014/09/16 职场文书
邀请函格式范文
2015/02/02 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
专业技术职务聘任证明
2015/03/02 职场文书