access_token存储更新
access_token 的存储至少要保留 512 个字符空间;
access_token 的有效期目前为 2 个小时,需定时刷新,重复获取将导致上次获取的 access_token 失效,并且每天获取的频次有限,所以需要进行本地缓存或者缓存到数据库进行使用,而不是每次调用接口都获取access_token
获取access_token并缓存到本地access_token.php文件封装函数
<?php // appid $appid = 'xxx'; // appsecret $appsecret = 'xxx'; // 缓存文件路径 $token_file = 'access_token.php'; // 刷新 access_token 的函数 function refreshaccesstoken($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_url, $url); curl_setopt($ch, curlopt_returntransfer, true); // 结果 $response = curl_exec($ch); curl_close($ch); // 解析结果 $data = json_decode($response, true); if (isset($data['access_token'])) { // 返回access_token return $data['access_token']; } else { // 解析失败 return false; } } // 从缓存文件中获取 access_token 和过期时间戳 function getaccesstokenfromcache($tokenfile) { // 判断缓存文件是否存在 if (file_exists($tokenfile)) { // 如果缓存文件存在 $tokendata = include($tokenfile); if ($tokendata && is_array($tokendata) && isset($tokendata['access_token']) && isset($tokendata['expires_at'])) { // 返回access_token return $tokendata; } } } // 更新缓存文件中的 access_token function updateaccesstokencache($tokenfile, $access_token, $expires_in) { // 提前一分钟刷新 $expires_at = time() + $expires_in - 60; // 生成缓存文件 $tokendata = "<?php\nreturn array('access_token' => '$access_token', 'expires_at' => $expires_at);\n"; file_put_contents($tokenfile, $tokendata); } // 获取当前时间 $current_time = time(); // 从缓存文件中获取 access_token 和过期时间戳 $tokendata = getaccesstokenfromcache($token_file); // 未过期 if ($tokendata && $tokendata['expires_at'] > $current_time) { // 使用缓存的 access_token $access_token = $tokendata['access_token']; // 输出已缓存的access_token echo "缓存的access_token: $access_token\n"; } else { // 刷新 access_token $access_token = refreshaccesstoken($appid, $appsecret); // 获取成功 if ($access_token) { // 输出新的access_token echo "新的access_token: $access_token\n"; // 更新缓存文件 updateaccesstokencache($token_file, $access_token, 7200); } else { // 刷新失败 echo "access_token刷新失败\n"; } } ?>
总结
在以上脚本中,加载这个脚本,会立刻读取本地access_token.php文件,如果存在这个文件,就解析这个文件的内容,读取里面的access_token和过期时间,如果过期了,就直接调用请求接口获取信的access_token并更新文件,如果没有过期,直接使用access_token.php文件里面的access_token作为业务需要。
以上就是php编写缓存微信access_token到本地脚本示例的详细内容,更多关于php access_token微信缓存本地脚本的资料请关注代码网其它相关文章!
发表评论