У меня есть 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>';
}