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基础知识:类与对象(3) 构造函数和析构函数
Dec 13 PHP
PHP5 安装方法
Jan 15 PHP
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
Aug 07 PHP
php使用qr生成二维码的示例分享
Jan 20 PHP
PHP中使用sleep函数实现定时任务实例分享
Aug 21 PHP
Yii实现自动加载类地图的方法
Apr 01 PHP
PHP导入导出Excel代码
Jul 07 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
微信企业转账之入口类分装php代码
Oct 01 PHP
PHP单例模式数据库连接类与页面静态化实现方法
Mar 20 PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 PHP
PHP实现文件上传与下载
Aug 28 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
应用开发中涉及到的css和php笔记分享
2011/08/02 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
jQuery布局插件UI Layout简介及使用方法
2013/04/03 Javascript
使用js解决由border属性引起的div宽度问题
2013/11/26 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
jquery实现浮动的侧栏实例
2015/06/25 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
小程序Scroll-view上拉滚动刷新数据
2020/06/21 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
Python制作词云的方法
2018/01/03 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
python list转置和前后反转的例子
2019/08/26 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
Python自动重新加载模块详解(autoreload module)
2020/04/01 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
什么是岗位职责
2013/11/12 职场文书
教师师德演讲稿
2014/05/06 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
《折线统计图》教学反思
2016/02/22 职场文书
创业计划书之面包店
2019/09/17 职场文书
超级详细实用的pycharm常用快捷键
2021/05/12 Python
Elasticsearch 索引操作和增删改查
2022/04/19 Python