我目前正在尝试编写一个工作器启动器脚本。我使用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_*
函数的包装。
感谢您的帮助:)