如何找出一个具体的过程仍在运行PHP(how to find out a specific proc

2019-06-25 23:46发布

我正在写构建其他脚本的队列,并且应该管理自己的启动脚本。 管理者脚本应该知道哪些子进程结束,所以它可以启动其他脚本在队列中等待。

我添加了一个“&回声$!” 让每个子进程的进程ID。 所以我有我的子进程的进程ID,以及现在使用的系统“PS”的程序调用找到,如果子进程仍在运行与否。

事情是,我的剧本目前只运行在类Unix系统。 我不知道如何在Windows中获取我的孩子的PID,然后我的脚本不解析在Windows的“任务列表”命令的输出呢。

是否有任何其他的方式来实现这一目标? 任何的PHP解决方案找到,如果子进程仍在运行? 的溶液以启动其它过程(非阻挡),并检查它们是否仍在运行与否。

Answer 1:

您可能会发现过程控制有趣的Unix环境。 你也可能会发现在Windows上执行程序作为一个实例手册中评论 ,这点我想COM对象的。



Answer 2:

你可以做的是建立一个数据库或文件,将保留您的进程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



Answer 3:

您是否尝试过proc_get_status()? 在这种情况下,你可能想使用proc_open产卵你的子进程()。 林不知道,如果这是你在找什么。



文章来源: how to find out a specific process is still running in PHP