Php 如何在网页和实际程序之间进行交互

Php 如何在网页和实际程序之间进行交互,php,html,c++,linux,Php,Html,C++,Linux,我所拥有的: 服务器(linux)上的程序(c++) 该程序可以使用命令行参数执行 程序在一段时间后完成并产生连续输出(“log.txt”) 我想要什么: 我的想法是与该程序进行某种用户交互: 用户打开一个网站,其中显示一些输入(复选框等) 提交(POST)到服务器后,应使用所选设置启动程序 运行log.txt时,应向用户显示程序所做的更改 完成后,应出现一条消息(如“完成”) 最好的方法是什么?我目前的想法是启动一个后台进程()并监视进程id。但是,我不知道如何使用php动态监视进程,如何

我所拥有的:

  • 服务器(linux)上的程序(c++)
  • 该程序可以使用命令行参数执行
  • 程序在一段时间后完成并产生连续输出(“log.txt”)
我想要什么:

我的想法是与该程序进行某种用户交互:

  • 用户打开一个网站,其中显示一些输入(复选框等)
  • 提交(POST)到服务器后,应使用所选设置启动程序
  • 运行log.txt时,应向用户显示程序所做的更改
  • 完成后,应出现一条消息(如“完成”)
  • 最好的方法是什么?我目前的想法是启动一个后台进程()并监视进程id。但是,我不知道如何使用php动态监视进程,如何向用户显示log.txt输出,或者如何告诉用户程序已经完成,因为这些不是静态的,而是动态的


    我对C++很在行,但是我的HTML和PHP技巧是基本的。也许我需要进一步的技术来实现这一点?

    顺便说一句。这并不太广泛。我在寻找一个网站和程序之间的交互的一般方法,因为我没有找到关于这个的信息。C++程序和PHP脚本的公共数据库?PHP脚本创建文件,请求C++搜索?PHP启动另一个程序,并在其中添加参数,该程序将能够发送信号或使用任何其他IPC方法?只要你知道你有什么样的服务器(linux或windows),这当然可以用PHP来完成。您可能喜欢的另一个非常有趣的解决方案是使用nodejs服务器,但它可能会稍微复杂一点。这将允许您在客户端和服务器之间进行(几乎)实时通信,这是您可能想要完成的事情,就我所见(第3点),这种方法似乎是正确的。而不是proc_close();您必须使用proc_close($process);。此外,我可以看到我的程序已经执行(出现日志文件)。然而,FGET($pipes[1])没有收到任何输出。我的程序使用std::cout,这里可能有什么问题?嗯,有趣的问题。您是直接在txt文件中写入输出,还是在执行时也可以在控制台上看到输出?我至少犯了一个错误:我使用了clog而不是cout。此外,我不确定是否必须将向可执行文件添加路径添加到Linux路径。尽管如此,在这两个变化之后,它仍在发挥作用!您不一定需要将路径添加到Linux路径,除非您想直接从任何目录调用它
    
    <?php 
    
    ob_implicit_flush(true);
    ob_end_flush();
    
    $cmd = "your_program -{$_POST[option1]} -{$_POST[option2]}";
    
    $descriptorspec = array(
       0 => array("pipe", "r"),
       1 => array("pipe", "w"),
       2 => array("pipe", "w")
    );
    flush();
    $process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array());
    echo "<pre>";
    if (is_resource($process)) {
        while ($s = fgets($pipes[1])) {
            print $s;
            flush();
        }
    }
    echo "</pre>";
    
    proc_close();
    
    echo 'Proc finished!';