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为什么选mysql作为数据库? Mysql 创建用户方法
Jul 02 PHP
php 远程图片保存到本地的函数类
Dec 08 PHP
PHP 手机归属地查询 api
Feb 08 PHP
有关PHP性能优化的介绍
Jun 20 PHP
PHP加Nginx实现动态裁剪图片方案
Mar 10 PHP
php读取文件内容的方法汇总
Jan 24 PHP
php获得文件大小和文件创建时间的方法
Mar 13 PHP
PHP 读取文本文件内容并分页显示
Jan 02 PHP
如何修改Laravel中url()函数生成URL的根地址
Aug 11 PHP
PHP-FPM 的管理和配置详解
Feb 17 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
Aug 27 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 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使用curl简单抓取远程url的方法
2015/03/13 PHP
基于命令行执行带参数的php脚本并取得参数的方法
2016/01/25 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
sina的lightbox效果。
2007/01/09 Javascript
理解Javascript_13_执行模型详解
2010/10/20 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
python实现事件驱动
2018/11/21 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
python flask搭建web应用教程
2019/11/19 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
澳大利亚UGG工厂直销:Australian Ugg Boots
2017/10/14 全球购物
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
遗产继承公证书
2014/04/09 职场文书
社区护士演讲稿
2014/08/27 职场文书
电力培训心得体会
2014/09/02 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
责任书范本大全
2015/05/11 职场文书
交通事故调解协议书
2015/05/20 职场文书
标准发言稿结尾
2019/07/18 职场文书
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技