Witam niedawno pisałem tutaj w sprawie optymalizacji skryptu, który dosyć wolno działa. Otrzymałem odpowiedź, że najlepiej zmniejszyć liczbę zapytań, które są wykonywane w celu pobrania danych z api. Niestety dowiedziałem się, że jest to chyba nie możliwe, przez co strona wykonuje ponad 100 pętli do pobrania danych używając file_get_contents. Próbowałem przyspieszyć skrypt używając multi cURL, ale niestety API, z którego chce skorzystać wyrzuca błędy przy 100 zapytaniach na raz. Udaje mu się zaledwie z 15/20 żądaniami. Stąd pytanie da się to jakoś inaczej zrobić? Żeby było chociaż trochę szybciej. Obecnie zrobiłem, że długo czeka pierwsza osoba, która wejdzie na daną stronę, bo dla reszty dane są już z mojej bazy danych, ale niestety muszą być one często aktualizowane, więc wolałbym skrócić czas oczekiwania.
for($x=0; $x < $liczba_czlonkow_klanu; $x+1){
foreach ($decodedJson['data'] as $klan_info) {
$gracz = $klan_info['members'][$x]['account_name'];
$gracz_id = $klan_info['members'][$x]['account_id'];
$player_point = file_get_contents('https://api.worldoftanks.eu/wot/globalmap/eventaccountinfo/?application_id=id&account_id='.$gracz_id.'&event_id=fire_trail&front_id=fire_trail_bg&fields=events.battles%2C+events.fame_points%2C+events.rank%2C+events.updated_at');
$decodedpoints = json_decode($player_point, true);
foreach ($decodedpoints['data'] as $player_points) {
$punkty_gracza = $player_points['events']['fire_trail'][0]['fame_points'];
$position = $player_points['events']['fire_trail'][0]['rank'];
$updated_at = $decodedtest['data'][1]['updated_at'];
$battles = $player_points['events']['fire_trail'][0]['battles'];
$tablica[] = array('nick'=> $gracz, 'punkty'=> $punkty_gracza, 'pozycja'=> $position, 'bitwy'=>$battles, 'updated'=>$updated_at);
}
$x = $x+1;
}
}