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

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

Похожие вопросы