Теперь мне нужно пройтись по каждой записи с этих 19000, получить значение этой записи и после определить максимальное значение из этих 19000. API за один запрос дает максимально 200 записей.
Я сделал так:
1. Цикл for от 1 до 19000/200
2. За каждый проход цикла, записываю в массив максимальное значение из 200.
3. Когда for дошел до конца, выбираю максимальное значение из записанного массива.
Работает, но работает долго.
Каким образом это улучшить или нужно по другому это делать?
Не поможет. Предположим, у вас хорошее апи и отвечает в среднем за 0,05с (с учётом всех накладных расходов отправки, обработки и доставки ответа до вашей железки). 19000/200*0,05
- что будет чуть менее 5 секунд реального времени. Предположим ещё более быстрое и стабильное апи с временем получения ответа в 0,01с - это всё ещё одна секунда реального времени.
Не имеет значения, что и как вы делаете на своей стороне, если 99% времени вы просто ждёте результат вызова API.
Если владелец API за такое не обидится и не начнёт ужимать лимиты по числу запросов (сотня запросов в секунду от одного вашего скрипта - это весьма много) то можно взять multi curl и выполнять запросы к api параллельно. В печальном случае, если API не базируется на HTTP - то писать свою обвязку на неблокирующих сокетах. И повторюсь, есть большой шанс влететь на лимиты использования API. А то и вообще положить шквалом запросов внешнюю систему, если та не готова к такой интенсивности запросов.
Более демократично - вывести пользователю прогрессбар. И заполнять его по мере обработки запросов. Т.е. сразу дать понять в интерфейсе, что задача требует времени и что про пользователя не забыли, его задача обрабатывается.
А оптимально, конечно, было бы убедить внешнюю систему добавить соответствующую возможность.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Есть база данных на SqldeveloperУ меня есть задача создать кое-какой вебсервис
Добрый день! Такая задачаЗаказчик хочет загружать бланки документов на сайт (там вордпресс стоит) так, чтобы пользователи могли их заполнять...
Есть файл CSV с данными - 2000 записейФайл обрабатывается и построчно записывается в БД