站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        PHP如何實(shí)現(xiàn)推送NBA賽事結(jié)果

        PHP實(shí)現(xiàn)推送NBA賽事結(jié)果的方法:1、創(chuàng)建PHP文件并設(shè)置時(shí)區(qū);2、采用PHP發(fā)起請(qǐng)求聚合數(shù)據(jù)提供的NBA賽事API;3、通過(guò)解析接口返回到JSON;4、提取關(guān)注的NBA比賽結(jié)果;5、將結(jié)果信息通過(guò)聚合云推服務(wù)推送至我需要接收的終端即可。

        PHP如何實(shí)現(xiàn)推送NBA賽事結(jié)果

        php入門(mén)到就業(yè)線上直播課:進(jìn)入學(xué)習(xí)
        Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點(diǎn)擊使用

        本教程操作環(huán)境:Windows7系統(tǒng)、PHP8.1版、DELL G3電腦

        PHP實(shí)現(xiàn)NBA賽事結(jié)果即時(shí)推送

        對(duì)于平時(shí)不能看NBA直播,但又希望第一時(shí)間知道喜歡的湖人隊(duì)的比賽結(jié)果。動(dòng)動(dòng)小手,簡(jiǎn)單實(shí)現(xiàn)監(jiān)測(cè)湖人隊(duì)的比賽結(jié)果,發(fā)送到自己微信、郵箱、釘釘上面。

        原理

        采用PHP發(fā)起請(qǐng)求聚合數(shù)據(jù)提供的NBA賽事API,通過(guò)解析接口返回到JSON,提取我關(guān)注的湖人隊(duì)比賽結(jié)果,并將結(jié)果信息通過(guò)聚合云推服務(wù)推送至我需要接收的終端。

        使用的服務(wù)

        NBA賽事查詢接口: https://www.juhe.cn/docs/api/id/92?s=cpphpcn

        消息推送服務(wù): tui.juhe.cn

        消息效果

        如果監(jiān)測(cè)到關(guān)注的比賽結(jié)果,你在聚合云推配置的接收終端將會(huì)收到通知,類(lèi)似如下:

        釘釘機(jī)器人:

        PHP如何實(shí)現(xiàn)推送NBA賽事結(jié)果

        微信公眾號(hào):

        PHP如何實(shí)現(xiàn)推送NBA賽事結(jié)果

        郵箱:

        PHP如何實(shí)現(xiàn)推送NBA賽事結(jié)果

        PHP代碼

        <?php/**  * PHP實(shí)現(xiàn)NBA賽事結(jié)果通知即時(shí)推送  *///設(shè)置時(shí)區(qū)if (PHP_VERSION >= '5.1') date_default_timezone_set('PRC'); $nba = new Nba(); $nba->run();class Nba{    // 關(guān)注的球隊(duì)列表     // private $teams = ['洛杉磯湖人', '布魯克林籃網(wǎng)'];     private $teams = ['洛杉磯湖人'];    // 開(kāi)始執(zhí)行     public function run()    {        echo "開(kāi)始監(jiān)測(cè)NBA今日賽程 - ". date("Y-m-d H:i:s") . PHP_EOL;        // 查詢今日NBA比賽清單         $todayMatchsResult = $this->getMatchResult();        if ($todayMatchsResult['code'] == '1') {            // 解析比賽結(jié)果,提取需要推送的比賽結(jié)果             $parseMatchsResult = $this->parseMatchs($todayMatchsResult['matchs']);            if ($parseMatchsResult) {                $this->pushMsg($parseMatchsResult);             } else {                echo "暫無(wú)比賽結(jié)果需要推送";             }         } else {            // 查詢失敗             echo $todayMatchsResult['msg'];         }     }    /**      * 將需要推送的比賽結(jié)果, 通過(guò) 聚合云推 推送至郵件、釘釘、微信等      * 聚合云推官網(wǎng): https://tui.juhe.cn/?f=nba      * @param null $msgs      */     private function pushMsg($msgs = null)    {        // 記錄已經(jīng)推送過(guò)的msg文件         $logFile = dirname(__FILE__).DIRECTORY_SEPARATOR."notify_log.txt";         $logContent = file_get_contents($logFile);         $logList = explode("n", $logContent);        // 在聚合云推個(gè)人中心獲取到的token         $token = "cd513bd*******b7261e566a3";        // 在聚合云推創(chuàng)建的ServiceID         $service_id = "1O***Ho";        // 自定義標(biāo)題         $title = "NBA賽事結(jié)果";         $doc_type = "text";        foreach ($msgs as $m) {            // 消息內(nèi)容MD5,簡(jiǎn)單記錄本地文件,用于判斷是否已經(jīng)推送,避免重復(fù) (當(dāng)然也可以使用數(shù)據(jù)庫(kù)、緩存等手段)             $mHash = md5($m);            if (in_array($mHash, $logList)) {                // 重復(fù)推送                 echo "{$m},推送結(jié)果:999 - 已經(jīng)推送過(guò),無(wú)需重復(fù)推送" . PHP_EOL;             } else {                // 開(kāi)始推送                 $params = [                    'token' => $token,                    'service_id' => $service_id,                    'title' => $title,                    'doc_type' => $doc_type,                    'content' => $m                 ];                 $pushResContent = $this->juheHttpRequest('https://tui.juhe.cn/api/plus/pushApi', http_build_query($params), 1);                 $pushRes = json_decode($pushResContent, true);                echo "{$m},推送結(jié)果:{$pushRes['code']} - {$pushRes['reason']}" . PHP_EOL;                // 記錄log                 file_put_contents($logFile, $mHash, FILE_APPEND);             }         }     }    /**      * 解析NBA比賽結(jié)果,提取關(guān)注的球隊(duì)比賽結(jié)果      * @param null $matchs      */     private function parseMatchs($matchs = null)    {         $matchText = null;        if ($matchs) {            foreach ($matchs as $m) {                if (in_array($m['team1'], $this->teams) || in_array($m['team2'], $this->teams)) {                    // 有關(guān)注的球隊(duì)且完賽                     if ($m['status'] == '3') {                        // 整合比賽球隊(duì)和結(jié)果信息                         $matchText[] = "{$m['team1']} {$m['team1_score']} - {$m['team2_score']} {$m['team2']}";                     }                 }             }         }        return $matchText;     }    /**      * 查詢NBA今日比賽狀態(tài)      * 通過(guò)聚合提供的接口,接口詳情:https://www.juhe.cn/docs/api/id/92?f=nba      */     private function getMatchResult()    {        // NBA賽事接口地址         $apiUrl = 'http://apis.juhe.cn/fapig/nba/query';        // 接口地址請(qǐng)求Key, 自行替換         $apiKey = '69e76b5*********4b87690c8';         $params = [            'key' => $apiKey         ];         $requestContent = $this->juheHttpRequest($apiUrl, http_build_query($params));         $requestResult = json_decode($requestContent, true);        if ($requestResult) {             $errorCode = $requestResult['error_code'];            if ($errorCode == 0) {                // 請(qǐng)求成功                 $matchs = isset($requestResult['result']['matchs']) ? $requestResult['result']['matchs'] : null;                if ($matchs) {                     $todayMatchs = null;                    foreach ($matchs as $key => $match) {                         $matchDate = $match['date'];                        if ($matchDate == date("Y-m-d")) {                            // 今日比賽列表                             $todayMatchs = $match['list'];                            break;                         }                     }                    // 返回比賽列表                     return ['code' => '1', 'msg' => '請(qǐng)求成功', 'matchs' => $todayMatchs];                 } else {                    // 無(wú)比賽記錄                     return ['code' => '1', 'msg' => '請(qǐng)求成功', 'matchs' => null];                 }             } else {                // 請(qǐng)求異常                 return ['code' => '2', 'msg' => '請(qǐng)求異常:' . $errorCode, 'matchs' => null];             }         } else {            // 請(qǐng)求異常,可能網(wǎng)絡(luò)異常             return ['code' => '2', 'msg' => '請(qǐng)求異常:網(wǎng)絡(luò)異常', 'matchs' => null];         }     }    /**      * 發(fā)起網(wǎng)絡(luò)請(qǐng)求函數(shù)      * @param string $url 請(qǐng)求的URL      * @param bool $params 請(qǐng)求的參數(shù)內(nèi)容      * @param int $ispost 是否POST請(qǐng)求      * @return bool|string 返回內(nèi)容      */     private function juheHttpRequest($url, $params = false, $ispost = 0)    {        // $httpInfo = [];         $ch = curl_init();         curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);         curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);         curl_setopt($ch, CURLOPT_TIMEOUT, 12);         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        if ($ispost) {             curl_setopt($ch, CURLOPT_POST, true);             curl_setopt($ch, CURLOPT_POSTFIELDS, $params);             curl_setopt($ch, CURLOPT_URL, $url);         } else {            if ($params) {                 curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);             } else {                 curl_setopt($ch, CURLOPT_URL, $url);             }         }         $response = curl_exec($ch);        if ($response === FALSE) {            // echo "cURL Error: ".curl_error($ch);             return false;         }        // $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);         // $httpInfo = array_merge($httpInfo, curl_getinfo($ch));         curl_close($ch);        return $response;     } }
        登錄后復(fù)制

        計(jì)劃任務(wù)配置

        您可以通過(guò)crontab等方式定時(shí)(每分鐘)去執(zhí)行代碼監(jiān)測(cè)。
        比如crontab配置方式:
        命令行輸入crontab -e進(jìn)入計(jì)劃任務(wù)配置

        # 每分鐘執(zhí)行一次*/1 * * * * /usr/bin/php nba.php >> /data/log.txt
        登錄后復(fù)制

        cat /data/log.txt
        登錄后復(fù)制

        洛杉磯湖人 102 - 109 密爾沃基雄鹿,推送結(jié)果:200 - success 開(kāi)始監(jiān)測(cè)NBA今日賽程 - 2021-11-18 18:41:00洛杉磯湖人 102 - 109 密爾沃基雄鹿,推送結(jié)果:999 - 已經(jīng)推送過(guò),無(wú)需重復(fù)推送 開(kāi)始監(jiān)測(cè)NBA今日賽程 - 2021-11-18 18:42:01洛杉磯湖人 102 - 109 密爾沃基雄鹿,推送結(jié)果:999 - 已經(jīng)推送過(guò),無(wú)需重復(fù)推送 開(kāi)始監(jiān)測(cè)NBA今日賽程 - 2021-11-18 18:42:39洛杉磯湖人 102 - 109 密爾沃基雄鹿,推送結(jié)果:999 - 已經(jīng)推送過(guò),無(wú)需重復(fù)推送 開(kāi)始監(jiān)測(cè)NBA今日賽程 - 2021-11-18 18:43:00洛杉磯湖人 102 - 109 密爾沃基雄鹿,推送結(jié)果:999 - 已經(jīng)推送過(guò),無(wú)需重復(fù)推送
        登錄后復(fù)制

        推薦學(xué)習(xí):《PHP視頻教程》

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 久久亚洲精品成人AV| 亚洲国产成人乱码精品女人久久久不卡 | 国产精品久久永久免费| 亚洲国产精品成人网址天堂| 国产精品区AV一区二区| 99精品高清视频一区二区| 亚洲国产美女精品久久久久∴| 久久97久久97精品免视看秋霞| 91精品啪在线观看国产电影| 国产精品久久永久免费| 国产成人精品午夜福利| 亚洲AV无码久久精品成人| 亚欧洲精品在线视频免费观看| 国产精品午夜免费观看网站| 亚洲国产综合精品中文第一区| 97久久精品国产精品青草| 日韩精品无码AV成人观看| 午夜国产精品无套| 国产精品一区二区av不卡| 一区二区三区精品| 精品国产91久久久久久久| 国产精品多人p群无码| 亚洲av无码国产精品色午夜字幕 | 中文字幕亚洲综合精品一区| 久久精品国产亚洲av高清漫画| 亚洲精品国产精品国自产观看| 国产精品成人99久久久久| 精品国产一区二区三区久久| 久久久久99精品成人片试看| 中文精品久久久久人妻不卡 | 国内精品久久久久久麻豆| 国内精品91最新在线观看| 亚洲av永久无码精品秋霞电影影院 | www.久久精品| 久久久无码精品亚洲日韩蜜臀浪潮| 欧美人与性动交α欧美精品| 99精品久久久久久久婷婷| 99久久精品毛片免费播放| 国产精品无码无在线观看| 午夜精品久久久久久影视777| 麻豆国产精品VA在线观看不卡|