簡體   English   中英

While循環+數組加載更快/替代

[英]While loop + Array load quicker / alternative

我自己有一個小數組,可以從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列表。 是否有其他選擇可以使我的頁面加載更快?

謝謝

您可以將結果緩存在文件中,例如:

$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;
}
  • 當然,Web服務器需要在緩存文件夾中具有寫權限。 您可以sys_get_temp_dir()使用sys_get_temp_dir()
  • 僅當緩存機制(md5,文件I / O等)比循環快得多時,這才是一個好的解決方案,您應該對其進行基准測試。
  • 代碼未經測試,但我認為它說明了這一概念。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM