Я написал программу на PHP, которая постоянно обновляет базу данных.Я бы хотел, чтобы выплевывал данные во время работы, чтобы другие процессы могли читать их и что-то с ними делать.
Вот что я имею в виду на диаграмме:
Я понимаю, что мне нужна какая-то межпроцессная связь (IPC), но я не уверен самый простой / простой способ сделать это в PHP .
Вот два возможных решения, которые я придумала:
1.Превратите основной процесс в сервер Unix Socket.
Я мог бы добавить некоторый код сокета в основной процесс, чтобы превратить его в сервер Unix Socket, обрабатывая соединения и записывая данные в сокет во время его работы.,Затем другие процессы могут подключаться и считывать данные из сокета:
Однако это означает, что основной программе придется иметь дело как с сокетомсервер вместе с выполнением своей основной работы.Кроме того, PHP не поддерживает многопоточность из коробки, что делает обработку нескольких соединений немного сложнее, и поэтому вся программа станет намного более сложной.
В целом, это не кажется самым простымрешение, особенно для программы, написанной на PHP (к сожалению).
2.Создайте отдельный сервер Unix Socket.
В качестве альтернативы, я мог бы написать отдельную программу сервера Unix Socket, в которую основной процесс может писать, и она будет передавать все записи любому другому процессу, который подключается к нему:
Преимущество заключается в отделении обязанностей по обслуживанию сокетов от Основного процесса.Это также значительно упростило бы обработку соединений, поскольку я мог бы написать это на языке, который лучше подходит для использования в качестве сервера сокетов.
Но с другой стороны, это означает, что мне нужно будет написать и запуститьдополнительная программа, которая поможет мне управлять межпроцессным взаимодействием.
Есть ли более простое решение?
Вариант 2 - мое предпочтительное решение до сих пор, но Есть ли какой-нибудь альтернативный метод, который я могу здесь упустить?
Опять же, я просто хочу, чтобы существующий процесс PHP выдавал некоторые данные во время работы, и чтобы другие процессы могли читать из него.
Какие есть простые решения для такого межпроцессного взаимодействия?