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 FPDF类库应用实现代码
Mar 20 PHP
PHP 获取远程文件内容的函数代码
Mar 24 PHP
php引用地址改变变量值的问题
Mar 23 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
PHP基于imap获取邮件实例
Nov 11 PHP
php程序员应具有的7种能力小结
Nov 27 PHP
php获取用户浏览器版本的方法
Jan 03 PHP
隐性调用php程序的方法
Jun 13 PHP
PHP下载文件的函数实例代码
May 18 PHP
magento后台无法登录解决办法的两种方法
Dec 09 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 PHP
PHP判断是否是微信打开,浏览器打开的方法
Mar 14 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小偷相关截取函数备忘
2010/11/28 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
简单实现php上传文件功能
2017/09/21 PHP
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
React中的refs的使用教程
2018/02/13 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
2020/03/18 Python
Python数据模型与Python对象模型的相关总结
2021/01/26 Python
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
金融专业个人求职信范文
2013/11/28 职场文书
酒店保安员岗位职责
2014/01/31 职场文书
导游个人求职信
2014/04/25 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
销售顾问工作计划书
2014/09/15 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
课改心得体会范文
2016/01/25 职场文书
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL
Python 视频画质增强
2022/04/28 Python
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers