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 相关文章推荐
dede全站URL静态化改造[070414更正]
Apr 17 PHP
PHP通用分页类page.php[仿google分页]
Aug 31 PHP
收集的二十一个实用便利的PHP函数代码
Apr 22 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
Feb 21 PHP
php读取图片内容并输出到浏览器的实现代码
Aug 08 PHP
php将字符串转换成16进制的方法
Mar 17 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
Jan 15 PHP
Yii框架引入coreseek分页功能示例
Feb 08 PHP
smarty模板的使用方法实例分析
Sep 18 PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
Nov 22 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动态生成JavaScript代码
2009/03/09 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
php生成唯一数字id的方法汇总
2015/11/18 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
2015/12/17 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
浅谈js原生拖放
2016/11/21 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
vue自定义全局组件(自定义插件)的用法
2018/01/30 Javascript
vue.js input框之间赋值方法
2018/08/24 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
python实现堆栈与队列的方法
2015/01/15 Python
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
使用CSS3制作倾斜导航条和毛玻璃效果
2017/09/12 HTML / CSS
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
爱情保证书大全
2014/04/29 职场文书
教育合作协议范本
2014/10/17 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
离职信范文
2015/06/23 职场文书
校园之声广播稿
2015/08/18 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书