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 相关文章推荐
实用函数8
Nov 08 PHP
php中使用__autoload()自动加载未定义类的实现代码
Feb 06 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
php去除字符串换行符示例分享
Feb 13 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
Feb 18 PHP
PHP中SimpleXML函数用法分析
Nov 26 PHP
php实现zip文件解压操作
Nov 03 PHP
PHP内核探索之变量
Dec 22 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
Feb 22 PHP
iis 7下安装laravel 5.4环境的方法教程
Jun 14 PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 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详细彻底学习Smarty
2008/03/27 PHP
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
2016/09/13 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
省市联动效果的简单实现代码(推荐)
2016/06/06 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
值得分享和收藏的xmlplus组件学习教程
2017/05/05 Javascript
Vue之mixin全局的用法详解
2018/08/22 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
js实现轮播图特效
2020/05/28 Javascript
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
2020/10/29 Javascript
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
Python requests模块实例用法
2019/02/11 Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
2019/04/29 Python
Python实现播放和录制声音的功能
2020/08/12 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
世界最大的私人旅行指南出版商:孤独星球
2016/08/23 全球购物
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
在校生自我鉴定
2014/01/23 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
土木工程生产实习心得体会
2016/01/22 职场文书
Django与数据库交互的实现
2021/06/03 Python
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js