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 相关文章推荐
基于mysql的bbs设计(三)
Oct 09 PHP
安装APACHE
Jan 15 PHP
理解和运用PHP中的多态性[译]
Aug 02 PHP
ThinkPHP 防止表单重复提交的方法
Aug 08 PHP
apache mysql php 源码编译使用方法
May 03 PHP
解析php 版获取重定向后的地址(代码)
Jun 26 PHP
php下Memcached入门实例解析
Jan 05 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
php计算整个目录大小的方法
Jun 19 PHP
必须收藏的23个php实用代码片段
Feb 02 PHP
微信封装的调用微信签名包的类库
Jun 08 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
Jun 27 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/11/16 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
PHP session垃圾回收机制实例分析
2019/06/28 PHP
JavaScript 乱码问题
2009/08/06 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
通过length属性判断jquery对象是否存在
2013/10/18 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
jquery处理json对象
2014/11/03 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
jQuery插件jRumble实现网页元素抖动
2015/06/05 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/06 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
Vue 图片压缩并上传至服务器功能
2020/01/15 Javascript
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
Python 不同对象比较大小示例探讨
2014/08/21 Python
wxPython窗口的继承机制实例分析
2014/09/28 Python
使用python编写简单的小程序编译成exe跑在win10上
2018/01/15 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
2020/07/01 Python
服装厂厂长职责
2013/12/16 职场文书
金融事务专业求职信
2014/04/25 职场文书
工作自我推荐信范文
2015/03/25 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
Win11更新失败并提示0xc1900101
2022/04/19 数码科技