За последние 24 часа нас посетил 22361 программист и 1027 роботов. Сейчас ищут 698 программистов ...

потоковая обработка xml 365 раз

Тема в разделе "PHP для новичков", создана пользователем aliensgroup, 7 фев 2023.

  1. aliensgroup

    aliensgroup Новичок

    С нами с:
    28 май 2022
    Сообщения:
    33
    Симпатии:
    0
    есть вчерашний файл url XML заканчивается на official_exchange_rates?get_xml=1&date=$vcera
    получаю курсы валют за вчера
    PHP:
    1. $vcera=date('d.m.Y' ,strtotime ("-1 days"));
    2. $url_old="https://www.exec.en/official_exchange_rates?get_xml=1&date=$vcera";
    3. $xml_old = file_get_contents($url_old);
    4. $potok = simplexml_load_string($xml_old);
    5. //  .................................................................и собственно получаю значение в цикле ...........//
    6. $value["old_$vl"] = bcdiv(($potok->xpath('////Valute[@ID = "' . $value["con_$vl"] . '"]')[0]->Value), 1, 2) ;
    суть вопроса, как создать массив от вчера до 365 дней назад , для данной валюты, желательно не дублируя в цикле от -365 до 0 ->
    PHP:
    1. $url_periud="https://www.exec.en/official_exchange_rates?get_xml=1&date=$от[-365 ,... 0]";
    2. $xml_periud = file_get_contents($url_periud);
    3. $potok = simplexml_load_string($xml_periud);
    и не тащить массивом 365 раз - 45 валют, а лишь только лишь одну
     
    #1 aliensgroup, 7 фев 2023
    Последнее редактирование: 7 фев 2023
  2. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    856
    Симпатии:
    132
    1) Если в API заявлена выемка через периоды, вынимать через API, так как ссылки на описание нет, хз, умеет ли оно периодами;
    2) Можно один раз запросить за 365 дней и хранить у себя, каждый новый день запрашивая новый курс, удаляя самый старый курс.
     
  3. aliensgroup

    aliensgroup Новичок

    С нами с:
    28 май 2022
    Сообщения:
    33
    Симпатии:
    0
    Это simplexml и он лишь парсер, а сам xml лежит на сайте банка где одна переменная data указывает какой xml дергаем, вернее за какое число. Мне заливать в базу данных данные за 365 дней нет желания, но как вариант. Я строю график курса валют использую старый добрый flot.js три валюты за 365 дней , может потом больше... , У меня и так база за 65мб переваливает с 30 таблицами
     
  4. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    856
    Симпатии:
    132
    @aliensgroup, банков, отдающих xml-ем курсы валют пруд-пруди, почему вопрос здесь по поводу выемки данных за период, а не к СП банка? )))
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    65 мб для бд - пыль
    Одна таблица на 365*3 записей - пылинка
     
    aliensgroup нравится это.
  6. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Заливайте не в базу, заливайте в XML или JSON. Для каждой валюты свой.
    Можно даже на другом сервере, раз старый добрый flot.js используете.
     
    aliensgroup нравится это.
  7. aliensgroup

    aliensgroup Новичок

    С нами с:
    28 май 2022
    Сообщения:
    33
    Симпатии:
    0
    ну наверно что меня интересует курс официальный, от нац банка , а он у меня в стране не пруд пруди, а один.... а использовать api коммерческих банков негуд, чЁ их библиотеки еще на собирают никто не знам
     
  8. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    856
    Симпатии:
    132
    exec.en не похож на домен ЦБ РФ )

    Получение данных, используя XML | Банк России (cbr.ru)
    Example 2 (Пример получения динамики котировок доллара США) тут за период для одной валюты.
     
  9. aliensgroup

    aliensgroup Новичок

    С нами с:
    28 май 2022
    Сообщения:
    33
    Симпатии:
    0
    Ну во первых я не сказал что моя страна РФ (хотя родственники именно там), я из Молдавии o_O. Ну а второе я пишу свой MVC контролёр , с возможностью в дальнейшем парсить любой набор данных xml и выводить в нужной форме. Не только от банков, но а также Гисметео, и пр. информеры в сети... Но все же мне не нравиться один момент, обращаться к серверу 365 раз как минимум раз в день, и если я не залью к себе на сервер эти сырые данные, то обращаться к первоначальному серверу будут не 365 раз, а 365 помноженное на количество посетителей на сайте запрашивающие через мой контролёр курсы, или другую статистику
     
    #9 aliensgroup, 9 фев 2023
    Последнее редактирование: 9 фев 2023
  10. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    856
    Симпатии:
    132
    Да бессмысленно трафик гонять, храни данные в БД за последний год, это реально копейки для хранилища.
     
    aliensgroup нравится это.