file_get_contents i api

0

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;
        		  }
        		}
0

Eeee...

(int) $punkty_gracza = $player_points['events']['fire_trail'][0]['fame_points'];

Przecież to nic nie robi. Jak już to powinno być coś w stylu:

$punkty_gracza = (int) $player_points['events']['fire_trail'][0]['fame_points'];

A co do prędkości, nie będzie szybciej, gdy użyjesz curla?

EDIT:

curla próbowałem użyć. Przy pojedynczych zapytaniach nie było różnicy lub było gorzej, a przy multi wywalało błąd bo za dużo żądań na raz -

Po każdym zapytaniu daj sleep na parę ms.

1 użytkowników online, w tym zalogowanych: 0, gości: 1