1

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

用户将定期通过 PHP Web 前端(CLI 守护进程和前端代码位于同一物理服务器上)发出管理工作人员的请求。前端将需要对守护进程进行方法调用。

我对如何处理这些“远程”方法调用感到困惑。我认为在标准 UNIX 或 TCP 套接字上使用诸如 JSON-RPC 之类的 RPC 协议将是可行的方法,但是 PHP 的 JSON-RPC、XML-RPC、SOAP 等的每个实现似乎都与HTTP。由于我不是通过网络进行通信,因此完全不需要 HTTP。

所以,两个问题:

  • 为什么大部分 PHP RPC 包都与 HTTP 耦合?
  • 如上所述处理方法调用的最佳方式是什么?
4

2 回答 2

1

为什么大部分 PHP RPC 包都与 HTTP 耦合?

这很简单。PHP 是为 Web 量身定制的。用 PHP 编写 CLI 应用程序比较少见。

为什么大部分 PHP RPC 包都与 HTTP 耦合?

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

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

于 2010-08-21T22:43:51.303 回答
0

您仍然可以使用 HTTP 并连接到 localhost,这不会产生任何网络流量。我不认为直接使用套接字可以获得任何真正的优势,但是如果你真的想要一个不同的传输层,你可以使用 Ripcord (http://ripcord.googlecode.com/),它允许你指定你的自己的传输层类。为了充分披露,我是 Ripcord 的作者,所以我可能有偏见。

于 2010-11-16T17:16:28.083 回答