Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php TwitchAPI减慢网站速度_Php_Drupal_Justin.tv - Fatal编程技术网

Php TwitchAPI减慢网站速度

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'

我正在使用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周期


看看

这肯定很慢,每次用户请求您的页面时,他们都必须等待,而您的服务器则从另一个站点请求另一个页面,这会给每个页面请求增加大量延迟。假设您一次点击200次,即200人等待您的服务器访问API 200次,请求相同的信息200次,接收和处理相同的信息200次

正确的方法是根据您想要的更新频率每隔几分钟/秒从Twitch API中提取一次(我建议使用Ultimate Cron并为此编写一个Cron函数),将这些结果缓存到数据库表中,然后让站点在请求页面时从数据库中提取结果,而不必每次都访问API。这将降低每个请求的延迟,甚至为服务器节省一些CPU周期