如何找出一个特定的进程仍然在PHP中运行

我正在编写一个脚本来构build其他脚本的队列,并且应该pipe理它们的启动。 pipe理器脚本应该知道哪个subprocess已经完成,所以它可以启动在队列中等待的其他脚本。

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

事情是,我的脚本目前只在类Unix系统中运行。 我不知道如何在窗口中获取我的孩子的PID,而且我的脚本也没有在windows中parsing“tasklist”命令的输出。

有没有其他办法可以做到这一点? 任何in-PHP解决scheme来查找subprocess是否仍在运行? 一个解决scheme来启动其他进程(非阻塞),并检查它们是否仍在运行。

您可能会发现在Unix环境下感兴趣的过程控制 。 您也可以在手册中找到一个在Windows上执行程序的例子,这指出我想到了COM对象。

你可以做的是创建一个数据库或文件,将保存您的流程ID。 每个进程将把他的PID(进程ID)写入文件或DB中。 使用这个方法来获取你的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()产生你的子进程。 林不知道这是你在找什么。