2

我正在编写一个构建其他脚本队列并应该管理它们的启动的脚本。管理器脚本应该知道哪个子进程已经完成,因此它可以启动其他在队列中等待的脚本。

我添加了一个“& echo $!” 获取每个子进程的进程 ID。所以我有我的子进程进程 ID,现在正在使用系统“ps”程序调用来查找子进程是否仍在运行。

问题是我的脚本目前仅在类 Unix 系统中运行。我不知道如何在 Windows 中获取我孩子的 PID,而且我的脚本还没有在 Windows 中解析“tasklist”命令的输出。

有没有其他方法可以实现这一目标?任何 PHP 解决方案来查找子进程是否仍在运行?启动其他进程(非阻塞)并检查它们是否仍在运行的解决方案。

4

3 回答 3

0

您可以做的是创建一个数据库或文件来保存您的进程 ID。每个进程都会在文件或数据库中写入他的 pid(进程 ID)。使用此方法获取您的 php pid:

getmypid();

您的监督进程将不时检查进程 ID 是否仍在运行,并显示以下内容:

function is_process_running($PID) {
  exec("ps $PID", $ProcessState);
  return(count($ProcessState) >= 2);
}

当进程停止时,您可以执行下一个进程

对于 Windows 的使用,请查看手册中的注释:http: //no2.php.net/manual/en/book.exec.php#87943

于 2009-10-12T15:53:55.530 回答
0

你试过 proc_get_status() 吗?在这种情况下,您可能希望使用 proc_open() 生成子进程。我不确定这是否是您要找的。

于 2011-10-19T21:22:27.270 回答
0

您可能会发现Unix 环境中的Process Control很有趣。您还可以在手册中找到一个在 Windows 上执行程序的示例作为注释,这让我想到了 COM 对象。

于 2009-07-15T06:32:08.280 回答