微信access_token全局缓存,处理过期

 1 //PHP创建access_token.json文件,将access_token 和 生成时间expires 保存在其中,
 2 //{"access_token":"xxxx","expires":1478799661}
 3 function getToken(){
 4     $appid=‘*‘;
 5     $appsecret=‘**‘;
 6     $file = file_get_contents("./access_token.json",true);
 7     $result = json_decode($file,true);
 8     echo $time();
 9 if (time() > $result[‘expires‘]){
10         $data = array();
11         $data[‘access_token‘] = getNewToken($appid,$appsecret);
12         $data[‘expires‘]=time()+7000;
13         $jsonStr =  json_encode($data);
14         $fp = fopen("./access_token.json", "w");
15         fwrite($fp, $jsonStr);
16         fclose($fp);
17         return $data[‘access_token‘];
18     }else{
19         return $result[‘access_token‘];
20     }
21 }
22 function getNewToken($appid,$appsecret){
23     $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}";
24     $access_token_Arr =  https_request($url);
25     return $access_token_Arr[‘access_token‘];
26 }
27 function https_request ($url){
28         $ch = curl_init();
29         curl_setopt($ch, CURLOPT_URL, $url);
30         curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
31         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
32         $out = curl_exec($ch);
33         curl_close($ch);
34         return  json_decode($out,true);
35 }
36 echo getToken();
时间: 2024-10-13 16:13:16

微信access_token全局缓存,处理过期的相关文章

单例设计模式全局缓存accessToken

使用微信JS-SDK开发的小伙伴们,看文档经常会看到这样一句话:(下面是微信开发文档的一部分原话截图) 这句话就是:开发者必须在自己的服务全局缓存access_token,jsapi_ticket 下面就使用单例模式进行全局缓存.(当然你也可以存入数据库,即所谓的实例化.然后每次从数据库取,然后弄个定时器定时刷新,楼主以前使用的这种方式,但是发现实在在浪费时间,浪费精力,不建议使用.就把下面这种不错的方式提供给大家.) 单例模式:顾名思义,就是系统中的一个类只有一个实例.无论有多少个类在调用它,

定时请求微信Access_Token

/// <summary> /// 设置缓存并在缓存超时两分钟前重新请求 /// </summary> private void SetAndAutoRefreshAccessToken() { object oToken = HttpContext.Current.Cache[WxConst.ACCESS_TOKEN]; string sToken = ""; int iExpiresIn = 0; if (oToken == null) { sToken =

atitit。浏览器缓存机制 and 微信浏览器防止缓存的设计 attilax 总结

atitit.浏览器缓存机制 and 微信浏览器防止缓存的设计 attilax 总结 1. 缓存的一些机制 1 1.1. http 304 1 1.2. 浏览器刷新的处理机制 1 1.3. Expires 2 1.4. Cache-Control 2 1.5. Last-Modified/E-tag 3 1.6. Etag 主要为了解决 Last-Modified 无法解决的一些问题. 4 2. 不同的页面打开方式产生的请求区别 5 3. html  meta法 5 4. http head 法

微信access_token存储与更新

/** * * @author xuyw * @email [email protected] * @date 2014-06-12 */ access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token. 正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效.由于获取access_token的api调用次数非常有限,建议开发者全局存储与更新access_token,频繁刷新access_token会导致ap

EGOCache如何检测缓存时间过期

子曰:学而不思则罔,思而不学则殆. 在上一篇文章中:EGOCache缓存框架详细讲解 提到EGOCache可以设定缓存过期时间,默认是1天.查看了一下EGOCache源码,设置默认时间: [self setDefaultTimeoutInterval:86400]; //86400 = 24 * 60 * 60 刚好是一天时间. EGOCache为什么要提供设定缓存过期时间呢?或者说设定缓存过期时间有什么好处呢?我觉得最大的好处就是可以定时清除缓存.可以设置某一项的缓存时间,很方便管理缓存. 那

python之获取微信access_token

# -*- coding: cp936 -*- #python 27 #xiaodeng #获取微信access_token #办法一:将该url直接填写到浏览器地址中可以获得access_token url='https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxc0f4d0ed1cb2f4e1&secret=c4d72d33cacf8c94845ac906ad60eed6' #办法二 i

被微信浏览器的缓存给忽悠啦!

最近为一个老项目做微信接入相关的工作,遇到一个特别奇葩的事情,客户端明明用js window.location = 'xxx.html' 访问了一个页面,那个页面会自动去访问后台的接口,后台接口去调用微信的接口,但是测试的时候,发现有的时候可以成功访问到 xxx.html,有的时候不能成功访问到xxx.html,后台调试输出的结果是,不管你是否成功的访问到了 xxx.html 页面,都会进行正常的 xxx.html 页面之后的操作,也就是访问后台的接口,但是如果没有成功访问到 xxx.html,

MySQL内存----使用说明全局缓存+线程缓存) 转

MySQL内存使用说明(全局缓存+线程缓存) 首先我们来看一个公式,MySQL中内存分为全局内存和线程内存两大部分(其实并不全部,只是影响比较大的 部分): per_thread_buffers=(read_buffer_size+read_rnd_buffer_size+sort_buffer_size+thread_stack+join_buffer_size+binlog_cache_size+tmp_table_size)*max_connections global_buffers=

c# .Net 缓存 使用System.Runtime.Caching 做缓存 平滑过期,绝对过期

1 public class CacheHeloer 2 { 3 4 /// <summary> 5 /// 默认缓存 6 /// </summary> 7 private static CacheHeloer Default { get { return new CacheHeloer(); } } 8 9 /// <summary> 10 /// 缓存初始化 11 /// </summary> 12 private MemoryCache cache =