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常用代码
Nov 23 PHP
set_include_path在win和linux下的区别
Jan 10 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
Oct 23 PHP
php解析html类库simple_html_dom(详细介绍)
Jul 05 PHP
PHP实现阳历到农历转换的类实例
Mar 07 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
Jun 17 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
Aug 08 PHP
php简单实现多维数组排序的方法
Sep 30 PHP
php中final关键字用法分析
Dec 07 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
Aug 02 PHP
Laravel统计一段时间间隔的数据方法
Oct 09 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 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魔术引号所带来的安全问题分析
2014/07/15 PHP
php实现Session存储到Redis
2015/11/11 PHP
教你在header中隐藏php的版本信息
2016/08/10 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
Javascript开发包大全整理
2006/12/22 Javascript
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
python使用socket进行简单网络连接的方法
2015/04/29 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
ORM Django 终端打印 SQL 语句实现解析
2019/08/09 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
美国知名生活购物网站:Goop
2017/11/03 全球购物
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
什么是Linux虚拟文件系统VFS
2012/01/31 面试题
自我评价如何写好?
2014/01/05 职场文书
农民工创业典型事迹
2014/01/25 职场文书
给实习单位的感谢信
2014/02/01 职场文书
小学教师读书活动总结
2014/07/08 职场文书
课内比教学心得体会
2014/09/09 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
幼儿园教师求职信
2015/03/20 职场文书
国际贸易实训总结
2015/08/03 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB