Передайте дескриптор сокета между процессами PHP, чтобы процесс A мог общаться с процессом C?

У меня есть клиент / серверный демон в PHP, который разветвляется на запрос. Процессы A и B могут общаться с использованием межпроцессного взаимодействия (IPC) с помощью метода, описанного в socket_create_pair. Однако если запрос, обрабатываемый B, снова разветвляется (в процесс C) для обработки долго выполняющейся задачи после выхода из B, C может обмениваться данными по исходной паре IPC с A только до выхода B (поскольку A отбрасывает сокет при обработке SIGCHLD и А действительно понятия не имеет, С существует).

A -> listening process
B -> forked request process, will fork C
C -> forked request continuing a long task as B returns "In progress..." to the user.
(C can talk to A as long as B has not exited)

Это проблематично, поскольку A управляет некоторыми ресурсами, которые могут быть запрошены только IPC, и C, естественно, может в конечном итоге вызвать запрос IPC к A, который блокируется навсегда. Кроме того, существует риск повреждения данных, если B и C отправляют какой-либо IPC одновременно.

Я видел стратегии для передача сокетов между процессами, но это не представляется возможным в интерфейсе сокетов PHP. Я мог бы использовать непарный сокет прослушивания на A, на который C может отправлять запросы, но это один из способов. Есть ли в PHP какая-либо другая стратегия для реализации двунаправленного IPC между A и C?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]