В настоящее время я пытаюсь реализовать очередь заданий в php.Затем очередь будет обрабатываться как пакетное задание и должна иметь возможность обрабатывать некоторые задания параллельно.
Я уже провел какое-то исследование и нашел несколько способов его реализовать, но я не очень осведомлен об их преимуществах и недостатках.
Например, выполняя параллельную обработку, вызывая скрипт несколько раз через fsockopen
, как описано здесь:
Простая параллельная обработка в PHP
Другой способ, который я нашел, былиспользуя функции curl_multi
.
curl_multi_exec PHP docs
Но я думаю, что эти два способа значительно увеличат накладные расходы на создание пакетной обработки в очереди, хотя в основном они должны выполняться в фоновом режиме?
Я также читал о pcntl_fork
, который также является способом решения проблемы.Но похоже, что это может стать очень грязным, если вы действительно не знаете, что делаете (как я в данный момент;)).
Я также посмотрел на Gearman
, но там я быТакже необходимо динамически порождать рабочие потоки по мере необходимости, а не просто запускать несколько и позволить серверу заданий gearman затем отправить его свободным работникам.Особенно потому, что потоки должны завершаться без ошибок после выполнения одного задания, чтобы не допустить возможных утечек памяти (код может быть не идеален в этом вопросе).
Gearman Начало работы
Итак, мой вопрос, как вы обрабатываете параллельную обработку в PHP?И почему вы выбираете свой метод, какие преимущества / недостатки могут иметь различные методы?
Спасибо за любой вклад.