2016-02-24 1 views
1

У меня есть php-файл, который вызывает api и использует file_get_contents и json_decode, чтобы сохранить его в массиве. У меня есть текстовый файл с уникальной IDS для вызовов API, которые скрипт загружает каждый раз. Каждый из этих вызовов занимает около 1-6 секунд в зависимости от того, насколько медленным является API. Я использую foreach для вызовов/хранения и отображения. Требуется примерно 10-30 секунд, чтобы загрузить это

Есть ли какой-нибудь способ показать эти результаты по мере их вызывания и обработки, чтобы страница не казалась такой невосприимчивой? Например, пользователь увидит, что таблица создается одним слотом одновременно, а не объемной загрузкой. Это функция, я использую для извлечения и отображения данных, я все еще учусь PHP, так это может выглядеть безобразно для людей, которые знают лучше, чем ядинамические таблицы, созданные из ответа php api

function GetInfo(){ 
    $data = file('http://site', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 


echo '<body> 
     <div class="container">   
     <table class="table"> 
      <thead> 
      <tr> 
       <th>Name</th> 
       <th>Status</th> 
       <th>Game</th> 
       <th>Current Server</th> 
      </tr> 
      </thead> 
      <tbody>'; 

      foreach ($data as $xy){ 
      $api = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=snip&steamids=" . $xy; 
      $json = file_get_contents($api); 
      $decoded = json_decode($json); 
      $test = ($decoded->response->players[0]->personaname); 
      $serverip = ($decoded->response->players[0]->gameserverip); 
      $persona = ($decoded->response->players[0]->personastate); 
      $servername = server($serverip); 
      $visibility = ($decoded->response->players[0]->communityvisibilitystate); 
      $gamename = ($decoded->response->players[0]->gameextrainfo); 

      if ($visibility == 1) 
       $persona = "7"; 
       switch ($persona) { 
        case 0: 
        $colorcode = "danger"; 
        $status = "Offline"; 
        break; 
        case 1: 
        $colorcode = "success"; 
        $status = "Online"; 
        break; 
        case 2: 
        $status = "Busy"; 
        $colorcode = "info"; 
        break; 
        case 3: 
        $status = "Away"; 
        $colorcode = "info"; 
        break; 
        case 4: 
        $status = "Snooze"; 
        $colorcode = "info"; 
        break; 
        case 5: 
        $status = "Looking to trade"; 
        $colorcode = "danger"; 
        break; 
        case 6: 
        $status = "Looking to play"; 
        $colorcode = "danger"; 
        break; 
        case 7: 
        $status = "PRIVATE"; 
        $colorcode = "danger"; 
        break; 
       } 

       echo '<tr class="'. $colorcode .'"> 
         <td><a href="http://steamcommunity.com/profiles/'.$xy.'">'.$test.'</a></td> 
         <td>'.$status.'</td> 
         <td>'.$gamename.'</td> 
         <td>'.$servername.'</td> 
        </tr>'; 
      } 
     echo '</tbody> 
     </table> 
     </div> 

    </body> 
    </html>'; 
} 

ответ

0

Я использовал ob_flush(); и flush(); для вывода буфера и, похоже, это работает, это решение, которое я нашел, если у кого-то есть лучший, который я все еще наблюдаю.

Смежные вопросы