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配置心得包含MYSQL5乱码解决
Nov 20 PHP
IIS+PHP+MySQL+Zend配置 (视频教程)
Dec 13 PHP
ThinkPHP3.2.2的插件控制器功能
Mar 05 PHP
php字符串按照单词进行反转的方法
Mar 14 PHP
WordPress中缩略图的使用以及相关技巧
Nov 24 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
Feb 10 PHP
PHP反射学习入门示例
Jun 14 PHP
使用composer命令加载vendor中的第三方类库 的方法
Jul 09 PHP
laravel 5.3 单用户登录简单实现方法
Oct 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
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
PHP 开源AJAX框架14种
2009/08/24 PHP
PHP CLI模式下的多进程应用分析
2013/06/03 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
PHP简单获取随机数的常用方法小结
2017/06/07 PHP
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
JS动态修改iframe高度和宽度的方法
2015/04/01 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
2015/12/24 Javascript
学习JavaScript设计模式之责任链模式
2016/01/18 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
详解react组件通讯方式(多种)
2020/05/06 Javascript
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
python实现简单socket通信的方法
2016/04/19 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
Python探索之ModelForm代码详解
2017/10/26 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
简单了解python反射机制的一些知识
2019/07/13 Python
Python实现的爬取豆瓣电影信息功能案例
2019/09/15 Python
美国现代家具购物网站:LexMod
2019/01/09 全球购物
校园歌手大赛策划书
2014/01/17 职场文书
大学生旷课检讨书
2014/01/22 职场文书
企业授权委托书范本
2014/04/02 职场文书
企业安全标语
2014/06/07 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书