PHP асинхронный процесс связи - PullRequest
3 голосов
/ 03 января 2012

Есть ли способ добиться межпроцессного (или многопоточного) взаимодействия в PHP, но при этом все работать в асинхронном режиме?

Я хочу иметь скрипт, который создает 4 процесса и затем немедленно завершается.Каждый из 4 процессов должен выполнить действие, и когда он завершится, он должен уведомить кого-то (может быть, другой сценарий?), Что он завершен.Поэтому я хочу знать, когда все 4 сценария выполнены, чтобы я мог обновить свое состояние с , получив до выполнено .

Возможно ли это?Желательно без перекомпиляции PHP (я читал, что это требуется для работы с потоками), но я сделаю это при необходимости.

Ответы [ 3 ]

4 голосов
/ 03 января 2012

Как уже упоминали другие, Gearman является одним из решений. Другой, который я на самом деле предпочитаю, - это создание асинхронной очереди сообщений, в которую вы добавляете задания в стек заданий.

Я использую ZeroMQ для таких целей, и есть PHP-фреймворк, который реализует ZeroMQ для асинхронных задач под названием Photon . Просмотр исходного кода Photon может дать вам некоторые идеи о том, как реализовать очередь асинхронных заданий на случай, если вы решите это сделать.

2 голосов
/ 03 января 2012

Gearman может предоставить то, что вы ищете.

1 голос
/ 03 января 2012

Вы можете использовать систему очередей заданий или вставить ее в CRON.PHP поддерживает несколько очередей заданий, но в прошлом я использовал Gearman , и я написал специальную оболочку для команды Linux at .Оба из них могут быть использованы для достижения «нитевидного» поведения без перекомпиляции PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...