繁体   English   中英

Twitch API减慢网站速度

[英]Twitch API slows down website

我正在使用Drupal,并想要添加一个块,在其中显示用户流,就像他们在teamliquid.net上一样。

因此,我做了正常的工作,向用户添加了一个字段,用户可以在其中输入Twitch-ID等。

这是我的views-view-fields--streambar--block.tpl.php文件:

    <?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周期。

看看hook_cron()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM