Php TwitchAPI减慢网站速度
我正在使用Drupal,希望添加一个块,其中显示用户流,就像他们在teamliquid.net上那样 所以我做了一些普通的事情,给用户添加了一个字段,在那里他们可以输入他们的Twitch ID等等 这是我的views-view-fields--streambar--block.tpl.php文件:Php TwitchAPI减慢网站速度,php,drupal,justin.tv,Php,Drupal,Justin.tv,我正在使用Drupal,希望添加一个块,其中显示用户流,就像他们在teamliquid.net上那样 所以我做了一些普通的事情,给用户添加了一个字段,在那里他们可以输入他们的Twitch ID等等 这是我的views-view-fields--streambar--block.tpl.php文件: <?php $time_pre = microtime(true); $channelName = strip_tags($fields['field_streamid'
<?php
$time_pre = microtime(true);
$channelName = strip_tags($fields['field_streamid']->content);
$json_array = json_decode(file_get_contents('https://api.twitch.tv/kraken/streams/'.strtolower($channelName)), true);
$saveResult = " is Offline";
$currentViewer = "Offline";
$game = strip_tags($fields['field_teamuser']->content);
if ($json_array['stream'] != NULL) {
$channelTitle = $json_array['stream']['channel']['display_name'];
$streamTitle = $json_array['stream']['channel']['status'];
$currentGame = $json_array['stream']['channel']['game'];
$currentViewer =$json_array['stream']['viewers']." Viewers";
$saveResult = " is Online";
}
$time_post = microtime(true);
$exec_time = $time_post - $time_pre;
$sec = $exec_time * 1000;
?>
<div class=<?php echo "\"$game streamItem\"" ?> title=<?php echo "\"$currentViewer\"" ?> >
<?php
print $sec;
print $fields['name']->content;
echo "$saveResult";
?>
</div>
>
到目前为止,它的工作,但它减慢了网站像地狱一样。这是我的错,还是API太慢,我必须搜索解决方法?这肯定很慢,每次用户请求您的页面时,他们都必须等待,而您的服务器随后从另一个站点请求另一个页面,这会给每个页面请求增加大量延迟。假设您一次点击200次,即200人等待您的服务器访问API 200次,请求相同的信息200次,接收和处理相同的信息200次 正确的方法是根据您想要的更新频率每隔几分钟/秒从Twitch API中提取一次(我建议使用Ultimate Cron并为此编写一个Cron函数),将这些结果缓存到数据库表中,然后让站点在请求页面时从数据库中提取结果,而不必每次都访问API。这将降低每个请求的延迟,甚至为服务器节省一些CPU周期
看看这肯定很慢,每次用户请求您的页面时,他们都必须等待,而您的服务器则从另一个站点请求另一个页面,这会给每个页面请求增加大量延迟。假设您一次点击200次,即200人等待您的服务器访问API 200次,请求相同的信息200次,接收和处理相同的信息200次 正确的方法是根据您想要的更新频率每隔几分钟/秒从Twitch API中提取一次(我建议使用Ultimate Cron并为此编写一个Cron函数),将这些结果缓存到数据库表中,然后让站点在请求页面时从数据库中提取结果,而不必每次都访问API。这将降低每个请求的延迟,甚至为服务器节省一些CPU周期 看