php編寫緩存微信access_token到本地腳本示例
access_token存儲(chǔ)更新
access_token 的存儲(chǔ)至少要保留 512 個(gè)字符空間;
access_token 的有效期目前為 2 個(gè)小時(shí),需定時(shí)刷新,重復(fù)獲取將導(dǎo)致上次獲取的 access_token 失效,并且每天獲取的頻次有限,所以需要進(jìn)行本地緩存或者緩存到數(shù)據(jù)庫(kù)進(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ā)起請(qǐng)求 $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 和過(guò)期時(shí)間戳 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)前時(shí)間 $current_time = time(); // 從緩存文件中獲取 Access_Token 和過(guò)期時(shí)間戳 $tokenData = getAccessTokenFromCache($TOKEN_FILE); // 未過(guò)期 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é)
在以上腳本中,加載這個(gè)腳本,會(huì)立刻讀取本地access_token.php文件,如果存在這個(gè)文件,就解析這個(gè)文件的內(nèi)容,讀取里面的access_token和過(guò)期時(shí)間,如果過(guò)期了,就直接調(diào)用請(qǐng)求接口獲取信的access_token并更新文件,如果沒(méi)有過(guò)期,直接使用access_token.php文件里面的access_token作為業(yè)務(wù)需要。
以上就是php編寫緩存微信access_token到本地腳本示例的詳細(xì)內(nèi)容,更多關(guān)于php access_token微信緩存本地腳本的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
PHP實(shí)現(xiàn)簡(jiǎn)易圖形計(jì)算器
這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)簡(jiǎn)易圖形計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08PHP?Composer自動(dòng)加載使用實(shí)戰(zhàn)
這篇文章主要為大家介紹了PHP?Composer自動(dòng)加載使用實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09yii框架無(wú)限極分類的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了yii框架無(wú)限極分類的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04thinkphp3.x中display方法及show方法的用法實(shí)例
這篇文章主要介紹了thinkphp3.x中display方法及show方法的用法,結(jié)合實(shí)例形式分析了thinkPHP3.x模板的功能、定義、賦值、渲染及輸出等技巧,需要的朋友可以參考下2016-05-05PHP中把有符號(hào)整型轉(zhuǎn)換為無(wú)符號(hào)整型方法
這篇文章主要介紹了PHP中把有符號(hào)整型轉(zhuǎn)換為無(wú)符號(hào)整型方法,轉(zhuǎn)換的方法很簡(jiǎn)單,本文直接給出轉(zhuǎn)換方法,需要的朋友可以參考下2015-05-05php版微信開(kāi)發(fā)之接收消息,自動(dòng)判斷及回復(fù)相應(yīng)消息的方法
這篇文章主要介紹了php版微信開(kāi)發(fā)之接收消息,自動(dòng)判斷及回復(fù)相應(yīng)消息的方法,涉及基于微信消息處理接口的調(diào)用相關(guān)操作技巧,需要的朋友可以參考下2016-09-09php實(shí)現(xiàn)paypal 授權(quán)登錄
本文給大家分享的是php實(shí)現(xiàn)的paypal授權(quán)登錄的代碼,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。2015-05-05Laravel中9個(gè)不經(jīng)常用的小技巧匯總
這篇文章主要給大家總結(jié)介紹了關(guān)于Laravel中9個(gè)不經(jīng)常用的小技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Laravel具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04