使用PHP控制外部进程

时间:2015-01-28 21:42:35

标签: php json external-process

我有一个网页,其中显示了某些进程的状态(在表中,每个进程占一行)。用户可以选择启动流程或强制停止流程。

当用户单击以启动进程时,会将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中可以吗?

2 个答案:

答案 0 :(得分:0)

也许你应该使用Cron。当用户点击启动进程按钮时,php会更改mysql中的示例值。 Cron每分钟检查数据库值并可以开始处理。

答案 1 :(得分:0)

当您使用&启动流程时,流程正在后台运行,您将获得流程ID作为返回。因此,您可以将该pid保存在会话中,并在需要时终止该进程。

为此,您可以使用posix_kill命令。也许您可以触发您的事件并发送另一个请求来停止该过程。