Это звучит как архитектурная проблема.Зачем вам нужно делать тысячи запросов одновременно?Такого рода пареллизм пойдет на пользу, или вы случайно натолкнетесь на DOS (отказ в обслуживании) с каким-то плохим подозрительным веб-сервисом / API?
Предполагается, что вы не загоняете ни одного удаленного сервераВам все еще нужно беспокоиться о том, сколько соединений может обрабатывать ваш локальный компьютер.Есть только так много портов, которые вы можете использовать для исходящих, и они измеряются в десятках тысяч.Нетрудно достичь этого предела, если вы сходите с ума, открывая соединения.Любой, кто перегрузил нагрузочное тестирование с помощью Apachebench, знает это.
PHP не является отличным инструментом для такого рода вещей - и я парень, который делает PHP на 90%.Там нет потоков, и это интенсивно использует память.Если вы хотите, чтобы 1000 PHP процессов выполнялись параллельно, вам понадобится более одной машины.Ваш типичный процесс PHP потребляет около 10-20 мегабайт памяти, если только вы не отключите его (вероятно, во время компиляции.
) Вы говорите, что это происходит раз в год. Это заставляет меня думатьМожет быть, в этом нет необходимости, все, что нужно. Что если бы у вас было только 24 или 36 параллельных процессов?
Тем не менее, вот как я мог бы подойти к этому. PHP, вероятно, будет работать нормально, и если вы столкнетесьПроблемы неэффективности памяти, вы можете поменять только одну часть. Вам нужны две, более или менее асинхронные очереди и пара процессов, которые работают на них:
A "очередь выборки«- рабочая очередь HTTP-запросов, которые необходимо выполнить. Они выполняют запрос и помещают данные в очередь обработки (см. следующий пункт).
« Очередь обработки »aрабочая очередь, которая работает с любыми HTTP-ответами. Так же, как обрабатывается очередь, она может добавлять новые элементы в «выборочную очередь»
Какой-то процесс (или пара десятков), которые выполняются вппараллельно работает над очередью выборки.Параллелизм здесь хорош, так как у вас так много задержек из-за сети.
Какой-то процесс, который жует «очередь на обработку» - не ясно, поможет ли здесь параллелизм.Вся эта обработка происходит локально и, вероятно, может быть простым циклом.