公众号调用接口并不是无限制的,为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下,

每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到错误信息,造成调用失败。

我们也可以在手册里面清晰的看得到,如下所示:

我们的memcache可以将数据限时存放在内存中,我可可以将access_token放入到memcache中,将有效时间设置为2小时,在2小时内,

我们直接从memcache中获取access_token,而不是每次都从腾讯服务器中去取access_token,这样就大大降低了对获取access_token接口的调用次数。

当2小时后,memcache中的access_token失效,这时我们可以在次到腾讯的服务器获取新的access_token,然后在此缓存到memcache中,如此类推即可。

memcache是需要安装的,详细的安装方法可以观看夺命雷公狗的memcache课程里面的第一节课,里面详细的介绍了memcache的安装方法

废话不多说,直接用access_token.php进行修改,代码如下所示:

<?php
//原理,就是使用curl函数,发出http请求,获取access_token
$appid = 'wxed89d8f74fa6fc51'; //创建一个memcached对象
$mem = new Memcache;
//链接到memcached服务
if(!$mem->connect('127.0.0.1',11211)){
die('memcache链接失败');
} $access_token = $mem->get($appid);
//如果获取到,说明memcache存在这个access_token就直接使用
//如果没有获取到,$access_token就会false,我们就按原来的方法获取,并且将access_token缓存到memcache中
if(!$access_token){
$appsecret = 'd4624c36b6795d1d99dcf0547af5443d';
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}"; //我们使用curl函数
//初始化
$ch = curl_init();
//设置变量
curl_setopt($ch, CURLOPT_URL,$url); //这意思是,设置好发送的url地址发送到那
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,$url); 这样的意思是对方要不要验证,如果不用则按照下面的即可
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE); //如果不用验证,这样即可
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,FALSE); //如果不用验证HOST主机这样即可
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出
//执行
$output = curl_exec($ch); //返回来的值是一个json格式的值
//关闭句柄
curl_close($ch);
//对返回的json结果要将他转为一个数组
$jsoninfo = json_decode($output,true);
//测试以下,看下是否拿到返的回数组
//var_dump($jsoninfo); $access_token = $jsoninfo['access_token']; //将access_token缓存到memcache中去, MEMCACHE_COMPRESSED 是压缩的意思
$mem->set($appid,$access_token,MEMCACHE_COMPRESSED,7000);
}

夺命雷公狗---微信开发62----所以memcache对access_token进行全局缓存优化的更多相关文章

  1. 夺命雷公狗---微信开发17----自定义菜单的事件推送,响应菜单的CLICK

    废话不多说,index.php 代码如下所示: <?php /** * wechat php test */ //define your token require_once "com ...

  2. 夺命雷公狗---微信开发59----在线点播电影网1之ckplayer播放器

    我们节课程就要开始写一个小项目了,这项目主要是写一个在线点播电影影网的,我们用到的播放器是ckplayer ckplayer基本介绍: ckplayer的全称是:超酷flv播放器,他是一款用于网页上播 ...

  3. 夺命雷公狗---微信开发55----微信js-sdk接口开发(2)接口功能介绍之签名算法

    我们JS-SDK里面其实有不少的接口 startRecord---录音 stopRecord---停止录音 playVoice---播放 pauseVoice---暂停播放 uploadImage-- ...

  4. 夺命雷公狗---微信开发56----微信js-sdk接口开发(3)所有接口功能

    按照上节课程里面的介绍,我们可以先将刚才在signatrue.php里获取到的信息填写进jssdk.htm模版文件里填写各个权限的参数 jssdk.htm代码如下: <!DOCTYPE html ...

  5. 夺命雷公狗---微信开发54----微信js-sdk接口开发(1)之快速入门

    js-sdk基本介绍 除去服务号的九大接口外,微信提供了JS-SDK接口,所谓JS-SDK接口也就是在网页中使用javascript来更改网页设置, (比如隐藏右上角的菜单)获取用户状态(比如地理位置 ...

  6. 夺命雷公狗---微信开发53----网页授权(oauth2.0)获取用户基本信息接口(3)实现世界留言版

    前面两节课我们讲的是base型的授权了,那么现在我们开始Userinfo型授权, 先来看下我们的原理图 我们这节课来做一个 世界留言版 系统 1..首先我还是在微信测试平台那里设置好回调页面的域名 2 ...

  7. 夺命雷公狗---微信开发58----微网站之jquery_mobile之控件介绍

    我们上一节课里面介绍了基本的jqm是如何用的了,那么这一节课我们就开始玩玩他的控件 1...布局网格 <!DOCTYPE html> <html> <head> & ...

  8. 夺命雷公狗---微信开发57----微网站之jquery_mobile之入门案例

    这节课我们主要用到到jquery_mobile来实现一个点电影播放网站 jquery_mobile(简称JQM)其实就是基于jquery开发出来的一套移动端框架,适应移动用户端市场对浏览与体验从而进一 ...

  9. 夺命雷公狗---微信开发51----网页授权(oauth2.0)获取用户基本信息接口(1)

    如果用户在微信客户端访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,从而实现业务逻辑. 一般我们用来“数据采集”,“市场调查”,“投票”,只要授权了第三方网页,微信用户无需注册就可 ...

随机推荐

  1. php--求几个数中的最小值

    <?phpecho min(2, 3, 1, 6, 7);  // 1echo min(array(2, 4, 5)); // 2echo min(0, 'hello');     // 0ec ...

  2. [LeetCode] Sudoku Solver(迭代)

    Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by th ...

  3. Arcgis for Javascript API下类似于百度搜索A、B、C、D marker的实现方式

    原文:Arcgis for Javascript API下类似于百度搜索A.B.C.D marker的实现方式 多说无益,首先贴两张图让大家看看具体的效果: 图1.百度地图搜索结果 图2.Arcgis ...

  4. 删除Checkout with Multiple Addresses

    如果选择No,您的客户在结账时只可以输入一个收货地址,订单的货物都会送到这个地址.如果您选择Yes,您的客户将可以选择发货到多个地址,在购物车中的Proceed to Checkout按钮下面将会出现 ...

  5. windows server 2008服务器IIS绑定阿里云域名

    一.打开Internet 信息服务(IIS)管理器   二.将你的网站放到服务器目录下,比如D盘下的WWW文件夹.   三.在IIS中,添加网站,网站的物理路径指向第二部中创建的网站.   五.在绑定 ...

  6. COLUMN_VALUE Pseudocolumn

    With below three situation, we can use the pseudocolumn column_value to refer the column value. an X ...

  7. JQuery:JQuery设置HTML

    JQuery:设置HTML1.Query - 设置内容和属性设置内容 - text().html() 以及 val()我们将使用前一章中的三个相同的方法来设置内容: text() - 设置或返回所选元 ...

  8. CLM

    https://github.com/TadasBaltrusaitis/CLM-framework

  9. saltstack之(八)配置管理部署LAMP

    场景:公司有10台服务器需要安装lamp测试环境,使用saltstack编写state文件进行批量部署,可以提高工作效率,减少人为出错的可能性,保证环境的一致性. saltstack之配置管理lamp ...

  10. iOS UITableView的分割线短15像素,移动到最左边的方法(iOS8)

    有好几个朋友问我ios 分割线端了一些 如何解决,于是我就写一篇博客吧.为什么我说是少了15像素呢?首先我们拖拽一个默认的tableview 控件! 看下xcode5 面板的inspector(检查器 ...