@artyak1121

Почему перестал работать код получения валют ЦБ?

Сегодня на сайте появилась ошибка
failed to open stream: Redirection limit reached, aborting
как я понял, с сервера сильно много запросов было и сайт временно забанил Ip сервера.

Мой код:
public static function getActualCurs($rub) {
        $link = 'http://www.cbr.ru/scripts/XML_daily.asp';
        $str  = file_get_contents($link);

        preg_match('#<Valute ID="R01235">.*?.<Value>(.*?)</Value>.*?</Valute>#is', $str, $value);

        $usd = $value[1];

        $dollar = $rub/$usd;

        return round($dollar,3);
    }


Что можно в нем поменять, чтоб в дальнейшем не было проблем?
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Siverius
Возможно было бы неплохо не обращаться на сервер за файликом xml каждый раз. Мне представляется неплохим решением кэшировать этот xml - при обращении к методу getActualCurs проверять наличие сегодняшнего файла с курсами в папке на вашем сервере, если такового нет - обращаться на сервер ЦБР за новым, если есть - использовать его. Если я правильно понимаю, курсы меняются только раз в сутки, т.о.вы снизите частоту запросов до 1 в сутки.
Ответ написан
@Gic0
тебя заблокировали за частое обращение.
варианта 2
1. кэшировать и обновлять только если прошло достаточно времени (насколько помню, там курс обнавляется в 12-14 часов)
2. использовать не ЦБ, а сайт cbr-xml-daily
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 55 000 до 80 000 руб.
WACDAQ Москва
от 120 000 руб.
HTML Academy Санкт-Петербург
от 110 000 до 130 000 руб.
22 авг. 2019, в 02:23
45000 руб./за проект
22 авг. 2019, в 02:15
5000 руб./за проект
22 авг. 2019, в 01:00
300 руб./за проект