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 相关文章推荐
用phpmyadmin更改mysql5.0登录密码
Mar 25 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
May 05 PHP
深入HTTP响应状态码速查表的详解
Jun 07 PHP
php ci框架中加载css和js文件失败的解决方法
Mar 03 PHP
php防止伪造数据从地址栏URL提交的方法
Aug 24 PHP
php验证session无效的解决方法
Nov 04 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
PHP下载远程图片并保存到本地方法总结
Jan 22 PHP
php执行多个存储过程的方法【基于thinkPHP】
Nov 08 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
Sep 16 PHP
php创建类并调用的实例方法
Sep 25 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文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
单台服务器的PHP进程之间实现共享内存的方法
2014/06/13 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
2014/08/25 PHP
两款万能的php分页类
2015/11/12 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
在第一个input框内输入内容.textarea自动得到第一个文件框的值的javascript代码
2007/04/20 Javascript
二行代码解决全部网页木马
2008/03/28 Javascript
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
js中eval()函数和trim()去掉字符串左右空格应用
2013/02/02 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
js动态改变select选择变更option的index值示例
2014/07/10 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
javascript 注释代码的几种方法总结
2017/01/04 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
微信小程序实现获取小程序码和二维码java接口开发
2019/03/29 Javascript
javascript实现超好看的3D烟花特效
2020/01/01 Javascript
Python实现简单遗传算法(SGA)
2018/01/29 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
PHP笔试题
2012/02/22 面试题
预备党员入党思想汇报
2014/01/04 职场文书
2014自主招生自荐信策略
2014/01/27 职场文书
机电职业生涯规划书范文
2014/03/08 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
环保守法证明
2015/06/24 职场文书