我正在写构建其他脚本的队列,并且应该管理自己的启动脚本。 管理者脚本应该知道哪些子进程结束,所以它可以启动其他脚本在队列中等待。
我添加了一个“&回声$!” 让每个子进程的进程ID。 所以我有我的子进程的进程ID,以及现在使用的系统“PS”的程序调用找到,如果子进程仍在运行与否。
事情是,我的剧本目前只运行在类Unix系统。 我不知道如何在Windows中获取我的孩子的PID,然后我的脚本不解析在Windows的“任务列表”命令的输出呢。
是否有任何其他的方式来实现这一目标? 任何的PHP解决方案找到,如果子进程仍在运行? 的溶液以启动其它过程(非阻挡),并检查它们是否仍在运行与否。
您可能会发现过程控制有趣的Unix环境。 你也可能会发现在Windows上执行程序作为一个实例手册中评论 ,这点我想COM对象的。
你可以做的是建立一个数据库或文件,将保留您的进程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
您是否尝试过proc_get_status()? 在这种情况下,你可能想使用proc_open产卵你的子进程()。 林不知道,如果这是你在找什么。