Cześć,
mam po około 30 produktów na stronę w sklepie. Klient ma do wyboru pięć walut. Może je dowolnie zmieniać. W bazie przechowuję wszystko w złotówkach (dokładnie w groszach). Do przeliczania wykorzystuję taki kod.
public static function convert(string $fromCurrency, ?string $toCurrency, ?int $amount): float|null
{
if (!$amount)
return null;
if (!$toCurrency)
$toCurrency = 'PLN';
$req_url = 'https://api.exchangerate-api.com/v4/latest/'.$fromCurrency;
$response_json = file_get_contents($req_url);
if(false !== $response_json) {
try {
$response_object = json_decode($response_json);
return round(($amount * $response_object->rates->$toCurrency), 2);
}
catch(Exception $e) {
}
}
}
kod działa jednak kiedy na stronie jest powiedzmy 30 produktów nie jest to raczej wydajne rozwiązanie ponieważ za każdym razem cena jest przeliczana. Czasem też jest błąd
file_get_contents(https://api.exchangerate-api.com/v4/latest/PLN): Failed to open stream: HTTP request failed! HTTP/1.1 429 Too Many Requests
Moje pytanie: jak zrobić to wydajnie, tak aby nie było problemu i zbędnego obciążenia?
Dzięki