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

Call running program and get response in php

本文关键字:响应 php 运行 程序 调用      更新时间:2023-10-16

我创建了一个需要用户输入的c++程序。我想从php调用这个程序,并在我的网页上使用程序的输出。由于c++程序需要很多时间来初始化,我想让它在后台运行,并在调用时响应php脚本。然后php脚本应该获得输出并将其显示在我的页面上。这能做到吗?

当然,这是可以做到的,但是您可能需要编写两个C或c++程序,一个在后台运行,另一个在每次需要一些信息时由PHP程序启动。尽管有可能只使用PHP提出一种方案,但我并没有对此进行过多的研究。无论哪种方式,我都将对"请求信息"的进程(PHP或C)使用术语"请求者",对实际响应信息的进程使用术语"服务进程"。

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

所以,基本原则是:
  1. 后台服务进程启动(系统启动时自动)。
  2. 服务进程创建命名管道(在双向模式下,或两个管道,每个方向一个-我在下面使用单个管道-根据需要调整"输入管道"answers"输出管道")
  3. 当需要时,请求进程打开命名管道并发送请求消息。
  4. 服务进程返回带有请求信息的消息。
  5. 请求者关闭管道。
  6. 根据需要重复步骤2-5。
  7. 后台进程关闭,并作为其中的一部分破坏命名管道(在系统关闭时自动)。

当然,以上7个步骤中的每一个都有许多"小步骤",但总的来说,这几乎是你想要做的。