方式一:msg_get_queue实现
$key = ftok(__FILE__, 'a');
$queue = msg_get_queue($key);
$pidList = [];
$socketList = [];
for ($i = 1; $i <= 2; $i++) {
$taskPid = pcntl_fork();
if ($taskPid == -1) {
die("[父进程]child{$i}创建失败");
} elseif ($taskPid) {
$pidList[$i] = $taskPid;
echo "[父进程]child{$i}创建成功,子进程ID:{$taskPid}". PHP_EOL;
} else {
//子进程
while (true) {
msg_receive($queue, 1, $type, 1024, $msg);
if ($msg) {
echo "[子进程@child{$i}]收到消息:{$msg}";
}
usleep(50);
}
}
}
//父进程循环
while (true) {
msg_send($queue, 1, ['from'=>'father','text'=>"Hi child,I'm father."]);
sleep(3);
}