对于最近的一个项目,我有一个PHP脚本作为基于CLI的守护程序。该守护程序将负责监视/控制独立的工作流程。

定期,用户将通过PHP Web前端发布请求来管理工人(CLI守护程序和前端代码在同一物理服务器上)。 前端将需要对守护程序进行方法调用。

我对如何处理这些“远程”方法调用感到困惑。我认为在标准UNIX或TCP插座上使用RPC协议(例如JSON-RPC)是必需的,但是JSON-RPC,XML-RPC,SOAP,SOAP等的每项实现似乎都与PHP相关联似乎紧密耦合到http。由于我没有通过网络进行沟通,因此HTTP是完全不必要的。

因此,两个问题:

  • 为什么大多数PHP RPC软件包耦合到HTTP?
  • 如上所述,处理方法调用的最佳方法是什么?
有帮助吗?

解决方案

为什么大多数PHP RPC软件包耦合到HTTP?

这很简单。 PHP是为网络量身定制的。在PHP中编写CLI应用程序是罕见的。

为什么大多数PHP RPC软件包耦合到HTTP?

在使用另一种语言(例如Java)运行的程序上,PHP执行RPC更为常见,那里有很好的选择。

对于CLI PHP程序,我不知道任何开箱即用的解决方案。但是应该可以使用UNIX插座实现自定义解决方案。看到 插座扩展. 。请注意,PHP中多线程支持的不存在可能会使这更加困难(要处理多个连接,您将需要分叉或实现自己的单线程调度程序...)

其他提示

您仍然可以使用HTTP并连接到Localhost,这不会生成任何网络流量。我认为直接使用插座没有真正的优势,但是,如果您真的想要其他运输层,则可以使用RIPCORD(http://ripcord.googlecode.com/),允许您指定您的指定自己的运输层类。为了进行全面披露,我是Ripcord的作者,因此我可能会有偏见。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top