如何在网页和实际程序之间进行交互
How to interact between webpage and an actual program
我有什么:
- 服务器(linux)上的程序(c++)
- 程序可以使用命令行参数执行
- 程序在一段时间后结束,并产生连续输出("log.txt")
我想要什么:
我的想法是与该程序进行某种用户交互:
- 用户打开一个网站,显示一些输入(复选框等)
- 向服务器提交(POST)后,应使用选定的设置启动程序
- 运行log.txt时,程序所做的更改应显示给用户
- 完成后,应出现一条消息(例如"完成")
什么是最好的方法?我目前的想法是启动一个后台进程(php执行后台进程)并监控进程id。但是,我不知道如何用php动态监控进程,如何向用户显示log.txt输出,或者如何告诉用户程序已经完成,因为这些事情不是静态的,而是动态的。
我对C++很熟悉,但我的html和php技能是基本的。也许我需要进一步的技术?
<?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!';
正如这里所回答的,但有一些修改。
相关文章:
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- 用C++程序计算圆锥体的体积、球体的体积、八边形的面积和两点之间的距离
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 是否允许类在程序中的不同翻译单元之间具有不同的定义?
- 我的 c++ 程序似乎没有发现字符串和我拥有但输入使用 getline 的变量之间的比较
- MSVC 2010 编译应用程序和 MSVC 2019 编译应用程序之间的行为差异
- OpenCV 函数 cv::remap() 的执行时间更长,当程序在两者之间进入睡眠状态时
- 如何使用 ALSA API 在应用程序中在单声道和立体声之间切换声音输出?
- 在C++中的程序之间共享指针
- 指针和程序性能之间有什么关系吗?
- 播放器未在程序中的"X"和"O"之间切换
- 使用命名管道在 C# 和C++应用程序之间进行持续通信
- C++显示两个区间之间的数字的程序检查一个数字是否可以表示为两个素数的总和
- 为什么这个C++程序在代码::块和在线 IDE 之间返回不同的结果?
- C++程序和未识别程序之间的双向通信
- CPP 程序二查找两个给定日期之间的天数,conol CMD
- C# 和C++应用程序之间的通信
- 相同的 c 和 c++ 程序之间的巨大速度差异
- Electron应用程序和Win32本机桌面应用程序之间的进程间通信