Как лучше реализовать параллельное выполнение скриптов в Php?
Добрый день!
Есть такая задача.
Скрипт принимает запрос от пользователя, и нужно параллельно проверить информацию на 30-ти сайтах-поставщиках (число будет расти).
Проанализировать ответ - и отдать пользователю.
И эти 30 запросов необходимо выполнить быстро, параллельно, а не последовательно.
Multi-curl не подходит, т.к. после каждого curl для каждого сайта свои действия, возможно дополнительные curl-запросы, и другие вычисления
По сути это 30 функций, которые надо запустить параллельно, но основное время выполнения занимает ожидание ответа от сайтов, тут еще время ответа увеличивают PROXY.
Какие варианты лучше всего можно использовать в PHP для параллельного запуска? Чтобы работало быстро и тратило меньше всего ресурсов.
У меня в голове крутятся такие:
1. Реализовать запуском N скриптов, например через shell_exec("php script.php $params")- без ожидания ответа. И таким образом не иметь возможности обрабатывать ответ от каждого скрипта.
2. Делать с помощью pcntl - и тоже не иметь возможности дождаться и обработать ответ.
3. Сделать с помощью библиотеки pthreads - здесь можно запустить сразу 30 функций в 30-ти потоках( каждая функция в своем потоке) и дождаться их выполнения и обработать результаты.
(В данный момент реализован этот вариант, но мне сказали, что это плохой вариант)
Какой из этих вариантов лучше остальных? В чем отличия между этими вариантами?
И может кто-то какие-то варианты еще подскажет на php?
А также может это стоит реализовать на других языках программирования, и если так, то на каких и с использованием каких инструментов?
Сервер очередей пока тоже не подходит, необходимо на каждый запрос выполнять такую операцию максимально быстро, потому желательно все 30 функций выполнять параллельно.
А что (кто) потом должен обрабатывать результаты выполнения скрипта? На чем "оно" написано и что приблизительно делает? Я к тому спрашиваю, почему бы то, что инициализирует эти сами скрипты - и не следило бы за их запуском, состоянием и т.д.?