php編寫緩存微信access_token到本地腳本示例
access_token存儲更新
access_token 的存儲至少要保留 512 個字符空間;
access_token 的有效期目前為 2 個小時,需定時刷新,重復(fù)獲取將導(dǎo)致上次獲取的 access_token 失效,并且每天獲取的頻次有限,所以需要進(jìn)行本地緩存或者緩存到數(shù)據(jù)庫進(jìn)行使用,而不是每次調(diào)用接口都獲取access_token
獲取access_token并緩存到本地access_token.php文件封裝函數(shù)
<?php // APPID $APPID = 'xxx'; // APPSECRET $APPSECRET = 'xxx'; // 緩存文件路徑 $TOKEN_FILE = 'access_token.php'; // 刷新 Access_Token 的函數(shù) function refreshAccessToken($appid, $appsecret) { // 官方接口 $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"; // 發(fā)起請求 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 結(jié)果 $response = curl_exec($ch); curl_close($ch); // 解析結(jié)果 $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); } // 獲取當(dāng)前時間 $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"; } } ?>
總結(jié)
在以上腳本中,加載這個腳本,會立刻讀取本地access_token.php文件,如果存在這個文件,就解析這個文件的內(nèi)容,讀取里面的access_token和過期時間,如果過期了,就直接調(diào)用請求接口獲取信的access_token并更新文件,如果沒有過期,直接使用access_token.php文件里面的access_token作為業(yè)務(wù)需要。
以上就是php編寫緩存微信access_token到本地腳本示例的詳細(xì)內(nèi)容,更多關(guān)于php access_token微信緩存本地腳本的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
thinkphp3.x中display方法及show方法的用法實例
這篇文章主要介紹了thinkphp3.x中display方法及show方法的用法,結(jié)合實例形式分析了thinkPHP3.x模板的功能、定義、賦值、渲染及輸出等技巧,需要的朋友可以參考下2016-05-05php版微信開發(fā)之接收消息,自動判斷及回復(fù)相應(yīng)消息的方法
這篇文章主要介紹了php版微信開發(fā)之接收消息,自動判斷及回復(fù)相應(yīng)消息的方法,涉及基于微信消息處理接口的調(diào)用相關(guān)操作技巧,需要的朋友可以參考下2016-09-09