为什么 file_get_contents() 有时有效有时无效?

Why is this file_get_contents() sometimes working and sometimes not?

我正在构建一个小界面,用于将来自 YouTube 频道的直播视频显示到网页上。我得到了 API 密钥,我设置了它并且它起作用了。但是后来我无法访问从 YouTube 服务器返回的 json 的某些信息。

我尝试了一些东西,修复了所有出现的问题,但我意识到有时它会起作用,有时却不起作用...我搜索了其他线程,但我无法再理解发生了什么。

所以问题是:

  1. 如何使用 file_get_contents_url() 每次都获取有关 Youtube 频道的信息而不会出现 HTTP 响应失败?

  2. 为什么我的测试使用我拥有的所有单元作为来自 Google 的 API 的配额? (刷新 50 次左右就用完了)

我的代码

<?php
header("Access-Control-Allow-Origin: *");

# Enable Error Reporting and Display:
error_reporting(~0);
ini_set('display_errors', 1);

$API_KEY = 'API KEY HERE';
$ChannelID = ' CHANNEL ID HERE';

$channelInfo = 'https://www.googleapis.com/youtube/v3/search?part=snippet&channelId='.$ChannelID.'&type=video&eventType=live&key='.$API_KEY;

$extractInfo = file_get_contents_url($channelInfo);
$extractInfo = str_replace('},]',"}]",$extractInfo);
$showInfo = json_decode($extractInfo, true);

if($showInfo['pageInfo']['totalResults'] === 0){
    echo 'Users channel is Offline';
}else{
    echo 'Users channel is LIVE!';
}

$videoId = $extractInfo['items'][0]['id']["videoId"];

if ($videoId = 0) {
    echo "<h2>No live stream yet.</h2>";
} else {
    echo "</h2>$videoId</h2>";
}
?>

我需要的是:

  1. 访问我的 YouTube 频道,
  2. 获取内容为json,
  3. 转成php数组,
  4. 我在哪里得到直播视频videoId
  5. 并显示出来。

当我回应 $extractInfo 我得到

{
    "kind": "youtube#searchListResponse", 
    "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/yOWNawoTMP4atq-Ylgqt-1puBAQ\"", 
    "regionCode": "NL", 
    "pageInfo": { 
            "totalResults": 0, 
            "resultsPerPage": 5 
            }, 
    "items": [] 
} 0

如果您向我们展示的响应是完整的,那么如果您获得的频道处于离线状态,则项目数组已发送但为空,因此您的代码需要进行检查 可能性

// only run this if we actually have an array to process
if ( count($showInfo['items']) > 0 ) {
    $videoId = $showInfo['items'][0]['id']["videoId"];

    if ($videoId = 0) {
        echo "<h2>No live stream yet.</h2>";
    } else {
        echo "</h2>$videoId</h2>";
    }
} else {
    echo "No items in the array";
}