Множественные вызовы curl php проблема - PullRequest
0 голосов
/ 07 мая 2020

Моя проблема каждые 20 минут. Я хочу выполнять запрос curl, который составляет около 25000 или больше, и сохранять ответ curl в базе данных. В PHP это не обрабатывается должным образом, что является лучшими службами AWS, которые я могу использовать, кроме лямбда.

1 Ответ

0 голосов
/ 09 мая 2020

Обычный метод обработки большого количества похожих вызовов:

  • Создание очереди Amazon Simple Queue Service (SQS) и pu sh для каждого запроса в очереди как отдельное сообщение. В вашем случае сообщение будет содержать URL-адрес, который вы должны sh получить.
  • Создайте AWS лямбда-функцию , которая выполняет загрузку и сохраняет данные в базе данных.
  • Настройте лямбда-функцию для запуска очереди SQS

Таким образом, очередь SQS может запускать сотни параллельных функций Lambda . Предел параллелизма по умолчанию составляет 1000 лямбда-функций, но вы можете запросить его увеличение.

Тогда вам понадобится отдельный процесс, который каждые 20 минут запрашивает в базе данных URL-адреса и отправляет сообщения в Очередь SQS.

Полный процесс:

Schedule -> Lambda pusher -> messages into SQS -> Lambda workers -> database

Прелесть этой конструкции в том, что она может масштабироваться до обработки больших рабочих нагрузок и работать параллельно , а не каждый запрос curl должен ждать. Если сообщение не может быть обработано, Lambda автоматически попытается снова. При повторных сбоях сообщение будет отправлено в очередь недоставленных писем для дальнейшего анализа и обработки.

Если вы sh будете выполнять 25000 запросов каждые 20 минут (1200 секунд), для этого потребуется выполнение запроса каждые 0,05 секунды. Вот почему так важно работать параллельно.

Кстати, если вы пытаетесь очистить эту информацию с одного веб-сайта, я предлагаю вам выяснить, предоставляют ли они API, иначе вы можете нарушить Условия и Условия веб-сайта, против которых я настоятельно не рекомендую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...