资讯详情

资讯详情

php编写缓存微信access_token到本地脚本示例

access_token存储更新access_token 的存储至少要保留 512 个字符空间access_token 的有效期目前为 2 个小时需定时刷新重复获取将导致上次获取的 access_token 失效并且每天获取的频次有限所以需要进行本地缓存或者缓存到数据库进行使用而不是每次调用接口都获取access_token获取access_token并缓存到本地access_token.php文件封装函数12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273?php// APPID$APPIDxxx;// APPSECRET$APPSECRETxxx;// 缓存文件路径$TOKEN_FILEaccess_token.php;// 刷新 Access_Token 的函数functionrefreshAccessToken($appid,$appsecret) {// 官方接口$urlhttps://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credentialappid$appidsecret$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_tokenreturn$data[access_token];}else{// 解析失败returnfalse;}}// 从缓存文件中获取 Access_Token 和过期时间戳functiongetAccessTokenFromCache($tokenFile) {// 判断缓存文件是否存在if(file_exists($tokenFile)) {// 如果缓存文件存在$tokenDatainclude($tokenFile);if($tokenDatais_array($tokenData) isset($tokenData[access_token]) isset($tokenData[expires_at])) {// 返回access_tokenreturn$tokenData;}}}// 更新缓存文件中的 Access_TokenfunctionupdateAccessTokenCache($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_tokenecho缓存的Access_Token: $access_token\n;}else{// 刷新 Access_Token$access_token refreshAccessToken($APPID,$APPSECRET);// 获取成功if($access_token) {// 输出新的access_tokenecho新的Access_Token: $access_token\n;// 更新缓存文件updateAccessTokenCache($TOKEN_FILE,$access_token, 7200);}else{// 刷新失败echoAccess_Token刷新失败\n;}}?总结在以上脚本中加载这个脚本会立刻读取本地access_token.php文件如果存在这个文件就解析这个文件的内容读取里面的access_token和过期时间如果过期了就直接调用请求接口获取信的access_token并更新文件如果没有过期直接使用access_token.php文件里面的access_token作为业务需要。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →