我有一个网页,其中显示了某些进程的状态(在表中,每个进程占一行)。用户可以选择启动流程或强制停止流程。
当用户单击以启动进程时,会将JSON对象发送到(使用PHP)启动该进程的Web服务,如下所示:
<?php
$params = json_decode($_POST["object"]);
/** Do something with the params **/
// Start a external process in background (I'm using 'ls' as an example)
exec("ls &", $output);
/** Finish the script **/
问题是:此外部过程可能需要几分钟才能完成。所以,我想给出阻止它的选择。我想要的是:当用户单击“停止”按钮时,它会将JSON对象发送到Web服务(当然是在同一服务器中)以停止该过程。
如何跟踪外部流程?如果需要,我如何强制停止?如何让用户控制它? 在PHP中可以吗?
答案 0 :(得分:0)
也许你应该使用Cron。当用户点击启动进程按钮时,php会更改mysql中的示例值。 Cron每分钟检查数据库值并可以开始处理。
答案 1 :(得分:0)
当您使用&
启动流程时,流程正在后台运行,您将获得流程ID作为返回。因此,您可以将该pid保存在会话中,并在需要时终止该进程。
为此,您可以使用posix_kill命令。也许您可以触发您的事件并发送另一个请求来停止该过程。