调用运行程序并在php中获取响应

时间:2014-06-10 07:02:49

标签: php c++ daemon

我创建了一个需要用户输入的c ++程序。我想从php调用这个程序,并在我的网页上使用该程序的输出。 由于c ++程序需要花费大量时间来初始化,我希望它在后台运行并在调用时响应php脚本。然后php脚本应该获取输出并将其显示在我的页面上。 可以这样做吗?

1 个答案:

答案 0 :(得分:1)

当然,它可以完成,但您可能必须编写两个C或C ++程序,一个在后台运行,另一个由PHP程序启动,每次需要一些信息时。虽然有可能只使用PHP来制定一个方案 - 但我没有深入研究过它。无论哪种方式,我将使用“请求者”一词来表示“请求信息”的进程(PHP或C),以及实际用信息响应的进程的“服务进程”。

要在请求者和后台进程之间进行通信,您需要使用一些IPC(进程间通信)机制。有很多选择。在这种情况下,命名管道听起来像是一个合理的解决方案,并且命名管道在大多数操作系统中都可用(以及在例如Boost库中抽象,以允许更便携的解决方案,如果需要的话)。

所以,基本原则是:

  1. 启动后台服务流程(在系统启动时自动启动)。
  2. 服务流程创建命名管道(在双向模式下,或两个管道,每个方向一个 - 我在下面使用一个管道 - 根据需要调整“输入管道”和“输出管道”)
  3. 必要时,请求者进程打开命名管道并发送请求消息。
  4. 服务流程发回包含所请求信息的消息。
  5. 请求者关闭管道。
  6. 根据需要重复步骤2-5。
  7. 后台进程关闭,并且其中一部分会破坏命名管道(在系统关闭时自动)。
  8. 对于上述7个步骤中的每个步骤当然有许多“小步骤”,但总的来说,它几乎就是你想要做的。