долгий ответ от стороннего API

154
09 мая 2022, 14:40

Я получаю API от сторонних сервисов на PHP, процесс занимает некоторое время. Метод получения API вызывается AJAX запросом из вьюшки. Когда получение API достигнет сотни сервисов, я думаю скрипт будет долго думать. Подскажите как избежать большого времени выполнения получения API?

Answer 1

Для начала стоит убедиться, что ваш парсер работает оптимально. Если улучшить быстродействие скрипта не представляется возможном, советую использовать механизм очередей, подробней тут

Если коротко, механизм очередей позволит перевести обработку ответов в отдельный поток, который будет выполняться независимо от вашего сайта

Answer 2

Вообще, Bad Idea опрашивать API прям из view сразу. В конце концов, это может привести к ситуации, когда API просто забанит IP адрес сервера (Такое часто бывает при использование ip geolocation сервисов). Я не могу, к сожалению, рассказать детальный план что и почему делать, так как не в курсе деталей, но я бы сделал так:

  1. Поднял бы рядом с приложением Redis
  2. Сделал бы cron задачу с опросом APIшки (период опросов тут либо исходя из требований задачи, либо Эмпирически) и сохранением данных в Redis
  3. Метод котроллера нацелил бы на работу с Redis
  4. Ну а фронт по AJAX стучит в метод контроллера

По итогу получаем: быстрее реакция на фронте, так как все необходимое под боком; не рискуем получить бан от сервера API Минус - для получения данных в реальном режиме времени такой способ не подойдет. Да и мне кажется что REST API впринципе не про реалтайм изменения данных.

READ ALSO
Как проверить весь collection в MOngoDb для LogIn

Как проверить весь collection в MOngoDb для LogIn

Как проверить весь collection в MOngoDb для LogIn) Спасибо)

164
Как проверить содержание подменю?

Как проверить содержание подменю?

Подскажите, как проверить есть ли у меню подменю? Моя задумка простая: если у элемента li внутри есть элемент ul, значит подменю содержится и родителю...

209
Почему не работает break;

Почему не работает break;

(userAnswer1 || userAnswer2) != answer - это не так сравниваетсяВедь если два ответа будут отменены, то (null || null) != answer будет true

166
Как динамически изменить массив? React js

Как динамически изменить массив? React js

У меня есть два компонента, в первом компоненте массив, который я хочу динамически изменить (например при нажатии на кнопку) и передать во второй...

255