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


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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽