Параллельная обработка в PHP - Как вы это делаете?

В настоящее время я пытаюсь реализовать очередь заданий на php. Затем очередь будет обработана как пакетное задание и должна иметь возможность обрабатывать некоторые задания параллельно.

Я уже провел некоторое исследование и нашел несколько способов его реализации, но я не совсем осведомлен об их преимуществах и недостатках.

Например, выполнение параллельной обработки путем вызова сценария несколько раз через fsockopen , как описано здесь:
Простая параллельная обработка в PHP

Другой способ, который я нашел, - это использование curl_multi функции.
curl_multi_exec PHP docs

Но я думаю, что эти 2 способа значительно увеличат накладные расходы на создание пакетной обработки в очереди, которая должна в основном выполняться в фоновом режиме?

Я также читал о pcntl_fork также кажется способом справиться с проблемой. Но похоже, что это может стать действительно беспорядочным, если вы действительно не знаете, что делаете (как я в данный момент;)).

Я также смотрел Gearman , но там я также потребуется динамически порождать рабочие потоки по мере необходимости, а не просто запускать несколько и позволять серверу заданий gearman затем отправлять их бесплатным рабочим. Особенно потому, что потоки должны завершаться без ошибок после выполнения одного задания, чтобы не столкнуться с возможными утечками памяти (код может быть несовершенным в этой проблеме).
Gearman Getting Started

Итак, мой вопрос: как вы обрабатываете параллельную обработку в PHP? И почему вы выбираете свой метод, какие преимущества / недостатки могут иметь разные методы?

Спасибо за любой вклад.

34
задан enricog 24 May 2011 в 07:56
поделиться