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截取汉字乱码问题解决方法mb_substr函数的应用
Mar 30 PHP
PHP 数组入门教程小结
May 20 PHP
ajax php 实现写入数据库
Sep 02 PHP
PHP 之Section与Cookie使用总结
Sep 14 PHP
深入PHP中慎用双等于(==)的详解
Jun 06 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
Jun 12 PHP
thinkphp四种url访问方式详解
Nov 28 PHP
PHP获取昨天、今天及明天日期的方法
Feb 03 PHP
PHP的Yii框架中过滤器相关的使用总结
Mar 29 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
php命令行写shell实例详解
Jul 19 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 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
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
php中curl和file_get_content的区别
2014/05/10 PHP
Symfony核心类概述
2016/03/17 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
解决遍历时Array.indexOf产生的性能问题
2012/07/03 Javascript
jquery struts 验证唯一标识(公用方法)
2013/03/27 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
2017/09/03 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
javascript实现电商放大镜效果
2020/11/23 Javascript
Python使用matplotlib绘制动画的方法
2015/05/20 Python
python django使用haystack:全文检索的框架(实例讲解)
2017/09/27 Python
python实现京东秒杀功能
2018/07/30 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
python实现简单flappy bird
2018/12/24 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
python模块如何查看
2020/06/16 Python
python 调用Google翻译接口的方法
2020/12/09 Python
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
家居装修公司创业计划书范文
2014/03/20 职场文书
2014年服务员工作总结
2014/11/18 职场文书
党员个人党性分析材料
2014/12/18 职场文书
初中班长竞选稿
2015/11/20 职场文书
科级干部培训心得体会
2016/01/06 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
初一英语教学反思
2016/02/15 职场文书