ThinkPHP缓存微信公众号access_token

access_token作为微信的全局票据,在高级接口中需要频繁调用,其有效期为7200秒,即2小时,而微信官方对调用Token的次数有限制(参见接口频率限制说明),获取access_token每日限额为2000次,测试号只有200次。如果每次响应都调用access_token,则有可能随着用户的增多超过调用次数,影响微信公众平台的使用。这里封装了一个缓存access_token的函数,需要的时候调用即可

// 接收appID,appsecret和token
function get_access_token($appID,$appsecret,$token){
    static $access_token;
    $access_token = S($token.'weixin_access_token');
    if($access_token) { //已缓存,直接使用
        return $access_token;
    } else { //获取access_token
        $url_get = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appID.'&secret='.$appsecret;
        // 使用CURL
        $ch1 = curl_init ();
        $timeout = 5;
        curl_setopt ( $ch1, CURLOPT_URL, $url_get );
        curl_setopt ( $ch1, CURLOPT_RETURNTRANSFER, 1 );
        curl_setopt ( $ch1, CURLOPT_CONNECTTIMEOUT, $timeout );
        curl_setopt ( $ch1, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt ( $ch1, CURLOPT_SSL_VERIFYHOST, false );
        $accesstxt = curl_exec ( $ch1 );
        curl_close ( $ch1 );
        $access = json_decode ( $accesstxt, true );  //将access_token转换为数组
        // 缓存数据7200秒
        S($token.'weixin_access_token',$access['access_token'],7000);
        return $access['access_token'];
    }
}
原文地址:https://www.cnblogs.com/3body/p/5417003.html