在开发公众号的时候,免不了要用到公众号的接口,基于接口,它是需要access_token做基础的,而access_token它的有效期是有限定的,所以在获取到access_token的时候要注意保存。
1、在控制器中建一个方法,专门用来保存access_token信息,之后在开发中如需要用到接口,可以调起该方法。
<?php
namespace app\wx\controller;
use think\Controller;
class AccessToken extends Controller{
public 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;
}
public function getAccess_token(){
$appid = "";
$appsecret = "";
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
$output = $this->https_request($url);
$output = json_decode($output,true); //json转数组
$output['time'] = time();
cache('access_token',$output); //这儿存cache ,然后在需要的时候直接拿出来用
}
public function interval(){
ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
set_time_limit(0); // 执行时间为无限制,php默认执行时间是30秒,可以让程序无限制的执行下去
$interval = 7200; //时间(因为有有效期,2小时 7200秒)
do{
$this->getAccess_token();
sleep($interval);//等待时间,进行下一次操作。
ob_flush();//把数据从PHP的缓冲(buffer)中释放出来。
flush();
}while(true);
}
}
?>