Мне нужно реализовать механизм межпроцессных событий в PHP с несколькими источниками событий и несколькими слушателями событий. Например, PHP-скрипт, работающий в cron, может обнаружить новый входящий телефонный звонок и вызвать пользовательское событие с именем MY_EVENT_INCOMMING_CALL
, Любые другие скрипты PHP CLI / Apache, работающие в одно и то же время (ожидающие события в цикле), будут уведомлены о том, что это событие сработало, и выполнят некоторую работу. Например, отправленное серверное событие может быть отправлено в подключенные в настоящее время интернет-браузеры и отображать всплывающее уведомление о поступлении входящего вызова. Еще одна вещь: сценарий прослушивания должен получать только события, вызванные ПОСЛЕ начала прослушивания сценария, более старые события не должны обрабатываться.
Одна реализация использует таблицу SQL, содержащую события, с некоторыми сценариями, вставляющими события, другие пули для новых событий (на основе отметки времени события) и сценарий сборщика мусора событий, который удаляет старые события.
Я не заинтересован в сторонних инструментах, таких как RabbitMQ.
Есть ли какой-нибудь нативный механизм / библиотека PHP для такой ситуации?
ОБНОВЛЕНИЕ: я все еще не нашел собственную реализацию и закончил с использованием сокетов; Я разместил реализацию здесь: https://github.com/xprt64/events
Задача ещё не решена.
Других решений пока нет …