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安装问题
Oct 09 PHP
第八节--访问方式
Nov 16 PHP
使用PHP计算两个路径的相对路径
Jun 14 PHP
分享下PHP register_globals 值为on与off的理解
Sep 26 PHP
smarty半小时快速上手入门教程
Oct 27 PHP
推荐5款跨平台的PHP编辑器
Dec 25 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
Jul 31 PHP
调试WordPress中定时任务的相关PHP脚本示例
Dec 10 PHP
Yii2.0实现生成二维码功能实例
Oct 24 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
May 29 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 PHP
浅谈php使用curl模拟多线程发送请求
Mar 08 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实现的发送带附件邮件类实例
2014/09/22 PHP
php图片添加水印例子
2016/07/20 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
用JavaScript获取页面文档内容的实现代码
2016/06/10 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
2017/03/21 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
微信小程序实现折叠面板
2018/01/31 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
python运行时间的几种方法
2016/06/17 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
python socket 聊天室实例代码详解
2019/11/14 Python
Python3并发写文件与Python对比
2019/11/20 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
美国女孩服装购物网站:Justice
2017/03/04 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
在校硕士自我鉴定
2014/01/23 职场文书
优秀实习生感言
2014/03/01 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
住房租房协议书
2014/08/20 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
解决pytorch 损失函数中输入输出不匹配的问题
2021/06/05 Python
2021年最新用于图像处理的Python库总结
2021/06/15 Python
JS setTimeout与setInterval的区别
2022/04/20 Javascript