@Andreda

Как лучше реализовать параллельное выполнение скриптов в 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 функций выполнять параллельно.
  • Вопрос задан
  • 1405 просмотров
Пригласить эксперта
Ответы на вопрос 2
@myxasa
shell_exec("php script.php $params")

каждый скрипт должен писать ответ в БД или еще куда нибудь
основной скрипт по крону проверяет - закончена ли работа?
Ответ написан
Комментировать
@synapse_people
pcntl можно подождать несколько процессов пока завершатся, кто сказал, что нельзя?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы