распараллелить php-скрипт для drupal


Я разрабатываю модуль Drupal, в этом модуле мне нужно выполнить в 5 раз одну и ту же часть кода, поэтому я думаю, что могу сделать это параллельно, чтобы увеличить скорость выполнения, но я не хочу использовать pcntl_fork, я хотел бы использовать pthread. Теперь возникает вопрос: является ли библиотека pthread для php такой же, как в c? Могу ли я реализовать потоки уровня ядра в php? Потому что я думаю, что если php pthread является пользовательским уровнем, у меня нет никаких преимуществ, чтобы использовать его в моем случае Благодарим за ответы

Author: Riccardo Mariani, 2014-08-20

1 answers

Во-первых, некоторые фактические факты:

API pthreads облегчает многопоточность в пользовательской среде: он не создает зеленые или пользовательские потоки.

Зеленые потоки реализованы как своего рода совместная или упреждающая многозадачность в языках, виртуальные машины или среды которых недостаточно подготовлены для действительно многопоточного выполнения.

PHP подготовлен для многопоточного выполнения, у него есть правильная потоковая модель, и поэтому зеленый нити не нужны.

Pthreads в PHP не являются зелеными потоками, они реализованы с помощью потоков Posix, которые являются потоками ядра

Http://en.wikipedia.org/wiki/Green_threads

Http://en.wikipedia.org/wiki/Kernel_thread

Рассматриваемый вопрос

Я предполагаю, что вы намерены, чтобы эти потоки выполнялись внешним интерфейсом (то есть внутри веб-сервера по запросу клиента).

Я умоляю тебя не для этого; базовая математика запрещает модель выполнения, в которой запрос приводит к запланированному масштабированию X потоков.

Если часть вашего приложения требует того, что обеспечивает потоковая передача, затем отделите эту часть приложения от внешнего интерфейса (веб-сервера), полностью изолируйте ее, выполните ее как системную службу для связи с вашим внешним интерфейсом с помощью какой-либо разумной формы RPC.

 7
Author: Joe Watkins, 2014-08-24 08:44:34