如何在网页和实际计划之间进行互动

时间:2015-04-23 13:28:54

标签: php html c++ linux

我有什么:

  • 服务器(linux)上的程序(c ++)
  • 可以使用命令行参数执行程序
  • 程序结束一段时间后会产生连续输出(“log.txt”)

我想要的是什么:

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

  1. 用户打开一个显示一些输入(复选框等)的网站
  2. 向服务器提交(POST)后,应使用所选设置启动程序
  3. 运行log.txt时,应该向用户显示程序所做的更改
  4. 完成后应发生消息(例如“完成”)
  5. 最好的方法是什么?我目前的想法是启动后台进程(php execute a background process)并监视进程ID。但是,我不知道如何用php动态监视进程,如何向用户显示log.txt输出或如何告诉用户程序已经完成,因为这些东西不是静态的而是动态的。

    我对C ++很好,但我的HTML和PHP技能是基本的。也许我需要进一步的技术呢?

1 个答案:

答案 0 :(得分:1)

<?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!';

回答here,但稍作修改。