使用 PHP 控制外部进程

Control an external process with PHP

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

当用户点击启动一个进程时,一个 JSON 对象被发送到一个网络服务(使用 PHP)启动进程,如下所示:

<?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 **/

问题是:这个外部进程可能需要几分钟才能完成。所以,我想提供停止它的选项。我想要的是:当用户单击 "stop" 按钮时,它将向 Web 服务(当然在同一台服务器中)发送一个 JSON 对象以停止进程。

如何跟踪外部进程?如果需要,我如何强制它停止?我如何让用户控制它? PHP可以吗?

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

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

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