微信公众号01: ase实现access_token的存储和被动刷新

来源:互联网 发布:git mac客户端 编辑:程序博客网 时间:2024/04/30 18:36
一 知识点1.1 memcached服务   Memcached 是一个高性能的分布式内存对象缓存系统,可以用于动态 Web 应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。1.2 API使用方法官方文档: (http://php.net/manual/zh/book.memcache.php "PHP: Memcache - Manual")使用方法和标准的一样,唯一不一样的地方是调用 Memcache::connect 不用传任何参数(如果传了会被忽略)。

PHP: Memcache - Manual

二 实践<?php  /***************************************************************  *主题:使用ASE的缓存系统实现access_token的存储和被动刷新;  ***************************************************************/  echo "Topic: Realize store and Flush access_token "."<br>";  /**   * 定义微信公众号access_token的接口信息;   * 接口: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET   * 返回json数据包:{"access_token":"ACCESS_TOKEN","expires_in":7200}   */   $appid = "***";       // 请输入自己的微信开发账号信息;   $appsecret = "***";   $url   = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";  // 创建对象;  $mmc = new Memcache;  // 连接对象;(ASE平台对这个函数做了扩展)  $ret = $mmc->connect();  if($ret == false)  {      echo "Connect to ASE memcache is Failed !"."<br>";  }  else  {      echo "Connect to ASE memcache is OK !"."<br>";  }  // 从缓存系统中读取数据;  $access_token = $mmc->get("access_token");    if(empty($access_token))  {      echo "The access_token is null.Need to write. "."<br>";      $jsonData = https_request($url);      $arrayData = json_decode($jsonData,true);      $access_token = $arrayData["access_token"];      writeToMemcache($mmc,"access_token",$access_token,30);      echo $mmc->get("access_token");  }  else  {      echo "The access_token is ".$access_token."<br>";        }  /**   * Func:  往缓存系统写入值   * Input: $mmc    - Memcache对象;   *        $key    - 键名;   *        $value  - 键值;   *        $second - 过期时间(单位:秒);   */  function writeToMemcache($mmc,$key,$value,$second)  {      $ret = $mmc->set($key,$value,0,$second);      if($ret == false)      {          echo "write to memcache Failed !"."<br>";      }      else      {          echo "write to memcache Ok !"."<br>";      }  }  /**   * Func: cURL实现网络数据交互;   * Input: $url  - url地址;支持https协议;   *        $data - json包; ex:将数组格式数据编码为json包;   */  function https_request($url,$data = null)  {     $curl = curl_init();     curl_setopt($curl, CURLOPT_URL, $url);     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);     if (!empty($data)){         curl_setopt($curl, CURLOPT_POST, 1);         curl_setopt($curl, CURLOPT_POSTFIELDS, $data);     }     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);     $output = curl_exec($curl);     curl_close($curl);     return $output;   }?>
0 0
原创粉丝点击