Вопрос

Для недавнего проекта у меня есть сценарий PHP, работающий в качестве демона на основе CLI. Этот демон будет отвечать за мониторинг / контроль независимых рабочих процессов.

Периодически пользователи будут выпускать запросы на управление работниками через PHP Web Front-End (демон CLI и интерфейсный код находятся на одном физическом сервере). Фронтальный интерфейс должен будет сделать вызовы методов демону.

Я запутался о том, как справиться с этими «удаленными» вызовами метода. Я думал, что использование протокола RPC, такого как JSON-RPC по сравнению с стандартным сокетом Unix или TCP, но каждая реализация JSON-RPC, XML-RPC, SOAP и т. Д. Для PHP, кажется, тесно связана с Http. Поскольку я не общаюсь через Интернет, HTTP совершенно не нужен.

Итак, два вопроса:

  • Почему большинство пакетов PHP RPC в сочетании с HTTP?
  • Какой лучший способ обрабатывать звонки метода, как описано выше?
Это было полезно?

Решение

Почему большинство пакетов PHP RPC в сочетании с HTTP?

Это просто. PHP предназначен для веб-сайта. Rarer написать приложения CLI в PHP.

Почему большинство пакетов PHP RPC в сочетании с HTTP?

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

Для программы CLI PHP я не знаю о каком-либо предварительном расположенном растворе. Но должно быть возможно реализовать пользовательское решение с сокетами Unix. Увидеть Расширение розетки. Отказ Обратите внимание, что несуществующееся многопоточная опора в PHP может сделать это немного сложнее (для обработки нескольких подключений вам придется вилить или реализовать свой собственный однопоточный планировщик ...)

Другие советы

Вы все еще можете использовать HTTP и подключиться к localhost, который не генерирует никакого сетевого трафика. Я не думаю, что есть какое-либо настоящее преимущество, которое нужно получить, используя розетки напрямую, однако, если вы действительно хотите, чтобы другой транспортный слой, вы можете использовать RIPCORD (http://ripcord.googlecode.com/), который позволяет вам указать свой Собственный транспортный слой класса. Для полного раскрытия я автор RIPCORD, поэтому я могу быть предвзятым.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top