微信公众平台消息储存mysql php_PHP缓存微信公众号access_token的两种方法

1、文件缓存:

PHP创建access_token.json文件,将access_token 和 生成时间expires 保存在其中,

{"access_token":"xxxx","expires":1478799661}

function getToken(){

$appid='你的appid';

$appsecret='你的appsecret';

$file = file_get_contents("./access_token.json",true);

$result = json_decode($file,true);

if (time() > $result['expires']){

$data = array();

$data['access_token'] = getNewToken($appid,$appsecret);

$data['expires']=time()+7000;

$jsonStr =  json_encode($data);

$fp = fopen("./access_token.json", "w");

fwrite($fp, $jsonStr);

fclose($fp);

return $data['access_token'];

}else{

return $result['access_token'];

}

}

function getNewToken($appid,$appsecret){

$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}";

$access_token_Arr =  https_request($url);

return $access_token_Arr['access_token'];

}

function https_request ($url){

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$out = curl_exec($ch);

curl_close($ch);

return  json_decode($out,true);

}

2、数据库存储:

首先新建一个存储accesstoken的数据库表。

--

-- 表的结构 `accesstoken`

--

CREATE TABLE IF NOT EXISTS `accesstoken` (

`A_ID` int(11) NOT NULL,

`A_Token` varchar(600) COLLATE utf8_bin NOT NULL,

`A_Date` int(11) NOT NULL,

`A_Update` int(11) DEFAULT NULL

) ENGINE=InnoDBAUTO_INCREMENT=29DEFAULTCHARSET=utf8COLLATE=utf8_bin;

下面是PHP代码:

//获取 access_token  当然在这之前请连接好自己的数据库

functionCurl($appid,$appsecret) {

$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;

$ch= curl_init();

curl_setopt($ch, CURLOPT_TIMEOUT, 5);

curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

$dataBlock= curl_exec($ch);//这是json数据

curl_close($ch);

$res= json_decode($dataBlock, true);//接受一个json格式的字符串并且把它转换为 PHP 变量

return$res['access_token'];

}

//将令牌插入数据库

functionserilizable(){

$appid="你自己的";

$appsecret="你自己的";

$sql="select A_ID,A_Token,A_Date from accesstoken order by A_ID desc";

$rs=mysql_query($sql);

$times=time();//当前时间

$row=mysql_fetch_array($rs);

$rownum=mysql_num_rows($rs);

//数据时间-当前时间  小于800s

if($rownum== 0 ){//若无数据 那么获取令牌,存入数据库

$timestamp=time()+6000;//100分钟后

$token= Curl($appid,$appsecret);

$sqlin="insert into accesstoken(A_Token,A_Date) values('$token','$timestamp')";

mysql_query($sqlin);

return$token;

///return $rownum;

}else{

//超过数据的时间,那么重新获取令牌

if($row['A_Date'] 

$token= Curl($appid,$appsecret);

$timestamp=time()+6000;//100分钟后

$sqlu="UPDATE `accesstoken` SET `A_Token`='$token',`A_Date`='$timestamp' WHERE A_ID = '$row[A_ID]' ";

mysql_query($sqlu);

return$token;

}else//没超过,则从数据库取

return$row[A_Token];

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值