Задать вопрос
another_dream
@another_dream
Backend-разработчик, Laravel/ZF2/Yii2

Как менее ресурсозатратно решить задачу?

Имеется постоянно пополняющаяся таблица подписчиков (на данный момент более 8000 записей).

Каждые 5 минут выполняется CRON-задача и запускается процесс обработки записей за последний месяц (обычно не более 1000 записей).

Процесс обработки включает в себя обращение к API стороннего сервиса для получения статуса подписчика (подписан или ожидается подтверждение) и, при наличии статуса "активен" - статус в моей таблице тоже обновляется отдельным запросом. Так же, при отсутствии юзера в списке сервиса - повторное добавление через запрос к API этого сервиса.

Вопрос - как оптимизировать данный процесс?
Повторю данные:
~ 1000 записей из БД (один запрос на получение).
Цикл (в моем случае foreach) для этого массива.
Каждая итерация цикла - обращение к стороннему API, а также обновление статуса подписчика в моей базе (1 запрос), если он "активен" или повторный запрос к API сервиса.

PHP 5.6, CodeIgniter 2, MySQL.
  • Вопрос задан
  • 296 просмотров
Подписаться 1 Оценить Комментировать
Решение пользователя Егор К ответам на вопрос (3)
@egormmm
Борітеся — поборете!
Библиотека Requests позволяет делать параллельные запросы. Делайте по 10 параллельных запросов к API. Пока они обрабатываются - выполняются следующие 10.
С количеством запросов можно поэкспериментировать, зависит от мощностей хостера/vps.
Ответ написан