2016-06-29 3 views
0

Я подключаюсь к API с PHP через CURL GET, и я получаю json с почти 5000 заказами. Для каждого заказа я делаю еще один CURL GET и получаю детали заказа (в основном 2 foreach). После этого я делаю некоторые вставки и обновления в базе данных (основные вещи) с помощью LARAVEL.Как оптимизировать скорость для нескольких запросов CURL в PHP?

Большая проблема в том, что для тех 5000 заказов у ​​меня есть время загрузки почти одного часа. Мне нужно это с помощью cron каждую ночь (и более 5000).

У меня есть облачное решение с памятью 2 ГБ и 2 CoreProcessor.

Я пробовал также Zebra Curl, но не могу использовать это с завитой в завитке.

+1

1) Должен ли этот CRON работать один раз в день, чтобы захватить 5000? Может ли он работать ежечасно, чтобы захватить ~ 200 заказов вместо этого? Мое предложение состояло в том, чтобы запустить его несколько раз в час, если это возможно, добавить в очередь, затем добавить еще один CRON, который обрабатывает очередь с постоянной скоростью. –

+0

Вы можете использовать multi-curl для одновременного выполнения нескольких загрузок. – yergo

+0

Это всего лишь одна организация с 5000 заказами. Мне нужно 40-50 организаций - каждую ночь. Это интересная идея захватить ~ 200 в очереди. @yergo: второй завиток нужно что-то от ответа первого завитка - я не могу использовать мульти-завиток. –

ответ

0

Если 2% ежедневных рабочих мест (1 из 50 организаций) занимает почти 4% дня, вам определенно требуется параллельная обработка.

Есть несколько решений для этого:

  • Выполнить хроны для каждой организации.
  • Записи процесса для нескольких компаний в 1 многократном вызове.
  • Использование нескольких серверов.

Возможно, я использовал бы первый вариант: у вас может быть проверка заданий cron (каждую минуту?), Которые все еще нужно обрабатывать и какие организации обрабатываются в данный момент, и выбрать один, если есть какие-либо левые ,

Таким образом, каждое задание по-прежнему занимает 1 час, но все будет обрабатываться в течение 2 часов каждую ночь.

Смежные вопросы