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

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


Ответы (2 шт):

Автор решения: Serge Koflik

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

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

→ Ссылка
Автор решения: Denis Kovalev

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

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

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

→ Ссылка