долгий ответ от стороннего API
Я получаю API от сторонних сервисов на PHP, процесс занимает некоторое время. Метод получения API вызывается AJAX запросом из вьюшки. Когда получение API достигнет сотни сервисов, я думаю скрипт будет долго думать. Подскажите как избежать большого времени выполнения получения API?
Ответы (2 шт):
Для начала стоит убедиться, что ваш парсер работает оптимально. Если улучшить быстродействие скрипта не представляется возможном, советую использовать механизм очередей, подробней тут
Если коротко, механизм очередей позволит перевести обработку ответов в отдельный поток, который будет выполняться независимо от вашего сайта
Вообще, Bad Idea опрашивать API прям из view сразу. В конце концов, это может привести к ситуации, когда API просто забанит IP адрес сервера (Такое часто бывает при использование ip geolocation сервисов). Я не могу, к сожалению, рассказать детальный план что и почему делать, так как не в курсе деталей, но я бы сделал так:
- Поднял бы рядом с приложением Redis
- Сделал бы cron задачу с опросом APIшки (период опросов тут либо исходя из требований задачи, либо Эмпирически) и сохранением данных в Redis
- Метод котроллера нацелил бы на работу с Redis
- Ну а фронт по AJAX стучит в метод контроллера
По итогу получаем: быстрее реакция на фронте, так как все необходимое под боком; не рискуем получить бан от сервера API Минус - для получения данных в реальном режиме времени такой способ не подойдет. Да и мне кажется что REST API впринципе не про реалтайм изменения данных.