proc_open()在同一个脚本中多次运行时使用相同的PID

时间:2016-08-30 09:11:50

标签: php process

我目前正在尝试编写一个工作器启动器脚本。我使用proc_open来触发流程执行。它可以很好地与一个工作者一起工作但是当我尝试制作多个proc_open时,只有第一个实际运行该过程而其他人使用proc_get_status函数给我相同的PID ...

一些代码:

<?php
$procs = [];
$count = 10;
$script = "date";
while(--$count > 0)
{
    $proc = new Processus(
        $script,
        null,
        [1 => STDOUT]
    );
    $proc->open();
    $procs[] = $proc;
}

while(true) {
    foreach($procs as $key => $proc) {
        $status = $proc->getStatus();
        if(false === $status['running']) {
            finishProcess($proc, $status);
            unset($procs[$key]);
        }
    }

    if(0 === count($procs)) {
        break;
    }
}

finishProcess函数中,我为每个进程获取了$status['running'] === false,但我获得了相同的PID。

实际上,输出仅用date命令结果填充一次......我尝试使用不同的管道描述符但不能使其有效...

PHP可以在同一个脚本中运行多个子流程吗?

我的Process对象只是proc_*函数的包装。

感谢您的帮助:)

0 个答案:

没有答案