read(); echo "RECV: " . $data; } //循环创建进程 for($i = 0; $i < $worker_num; $i++) { $process = new swoole_process(function(swoole_process $process) { swoole_process::signal(SIGTERM, function($signal_num) use ($process) { echo "signal call = $signal_num, #{$process->pid}\n"; }); $i = 1; while($i++) { $process->write("Worker#{$process->id}: hello master\n"); if ($i > 5 and $process->id == 1) $process->exit(); sleep(1); } }); $process->id = $i; $pid = $process->start(); $workers[$process->pipe] = $process; } swoole_process::signal(SIGCHLD, function(){ //表示子进程已关闭,回收它 $status = swoole_process::wait(); echo "Worker#{$status['pid']} exit\n"; }); swoole_process::signal(SIGTERM, function($signal_num) { echo "signal call = $signal_num \n"; }); //将子进程的管道加入EventLoop foreach($workers as $process) { swoole_event_add($process->pipe, 'onReceive'); }