2015-01-27 5 views
0

У меня есть небольшой массив, который захватывает информацию из Twitch.tv и отображает ее с использованием переменных в массиве, который я создал.В то время как цикл + массив загружается быстрее/альтернативно

<?php include 'header.php'; 

$streamers = array("NomadicTV","TheOneJat","greatbritishbg","Themastergamer94","Gecko194","slayus","skunkodor"); 
shuffle($streamers); 
$random = shuffle($streamers); 
$streamerscount = 0; 
$streamtotal = count($streamers); 

    while (list(, $val) = each($streamers)) { 
     $url = "https://api.twitch.tv/kraken/streams/".$val; 
     $json = file_get_contents($url); 
     $json = json_decode($json); 
     $stream = $json->stream; 
       $channelAPI = json_decode(file_get_contents('https://api.twitch.tv/kraken/channels/'. $val)); 
       $status  = $channelAPI->status; 
       $name  = $channelAPI->display_name; 
       $gameimg = "http://static-cdn.jtvnw.net/ttv-boxart/".$channelAPI->game . "-272x380.jpg"; 
       $viewers = $streamsAPI->stream->viewers; 
       $followers = $channelAPI->followers; 
       $views  = $channelAPI->views; 
       $avatar  = $channelAPI->logo; 


        echo '<a href="cast.php?caster='.$val.'"/><img src="' . $avatar . '" class="streamers"/></a>'; 

    } 
?> 

Моя проблема заключается в том, что при загрузке страницы требуется некоторое время, когда она проходит через список while. Есть ли альтернатива для этого, которая ускорит загрузку моей страницы?

Благодаря

ответ

0

Вы можете кэшировать результат в файле, например:

$cacheFile = 'path/to/cache/folder/' . md5(serialize($shuffle)); 
$age = time() - filemtime(cacheFile); 
$maxAge = 3600; // 1 hour 
if(file_exists($cacheFile) && $age < $maxAge) { 
    echo file_get_contents($cacheFile); 
} else { 
    ob_start(); 
    /* here comes your loop */ 
    $output = ob_get_clean(); 
    file_put_contents($cacheFile, $output); 
    echo $output; 
} 
  • конечно потребности WebServer писать разрешения в папке кэша. Вы можете использовать для этого sys_get_temp_dir().
  • это только хорошее решение, если механизм кэширования (md5, файл ввода/вывода, ...) ist намного быстрее, чем ваш цикл, вы должны сравнить его.
  • Код не проверен, но я думаю, что это иллюстрирует концепцию.