Задать вопрос
@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);
    }


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