为什么 file_get_contents() 有时有效有时无效?
Why is this file_get_contents() sometimes working and sometimes not?
我正在构建一个小界面,用于将来自 YouTube 频道的直播视频显示到网页上。我得到了 API 密钥,我设置了它并且它起作用了。但是后来我无法访问从 YouTube 服务器返回的 json 的某些信息。
我尝试了一些东西,修复了所有出现的问题,但我意识到有时它会起作用,有时却不起作用...我搜索了其他线程,但我无法再理解发生了什么。
所以问题是:
如何使用 file_get_contents_url() 每次都获取有关 Youtube 频道的信息而不会出现 HTTP 响应失败?
为什么我的测试使用我拥有的所有单元作为来自 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>";
}
?>
我需要的是:
- 访问我的 YouTube 频道,
- 获取内容为json,
- 转成php数组,
- 我在哪里得到直播视频videoId
- 并显示出来。
当我回应 $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";
}
我正在构建一个小界面,用于将来自 YouTube 频道的直播视频显示到网页上。我得到了 API 密钥,我设置了它并且它起作用了。但是后来我无法访问从 YouTube 服务器返回的 json 的某些信息。
我尝试了一些东西,修复了所有出现的问题,但我意识到有时它会起作用,有时却不起作用...我搜索了其他线程,但我无法再理解发生了什么。
所以问题是:
如何使用 file_get_contents_url() 每次都获取有关 Youtube 频道的信息而不会出现 HTTP 响应失败?
为什么我的测试使用我拥有的所有单元作为来自 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>";
}
?>
我需要的是:
- 访问我的 YouTube 频道,
- 获取内容为json,
- 转成php数组,
- 我在哪里得到直播视频videoId
- 并显示出来。
当我回应 $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";
}