<?php
$data=[
'990979940@qq.com',
'213123@qq.com',
'457567657@qq.com'
];
//主进程
$start_time=microtime(true);
//发邮件失败返回给主进程
$workers=[];
foreach ($data as $v){
// echo '主进程id--'.posix_getpid().PHP_EOL; //主进程被关闭
$process= new swoole\Process('my_process');
//进程创建之前就需要创建队列了
$process->useQueue(1,2|swoole_process::IPC_NOWAIT);
$pid=$process->start(); //开启子进程
$process->push('hello 子进程');
//$workers[$pid]=$process
echo '主进程打印的内容:'.$process->pop().PHP_EOL; //不要当做管道使用
}
//子进程创建成功之后要执行的函数,在闭包函数当中执行的逻辑就是在子进程当中执行
function my_process($worker){
//echo '子进程id'.$worker->pid.PHP_EOL;
echo "来自主进程的消息:". $worker->pop().',来自管道'.$worker->pipe.',当前的进程id为'.$worker->pid.PHP_EOL;
$worker->push('hello 主进程'); //不要当做管道使用
$worker->exit();
}
//有可能产生僵尸进程,通过在主进程捕获子进程结束的信号,回收子进程
//子进程结束的信号(必须要做)
swoole\Process::signal(SIGCHLD,function (){
while ($res=swoole_process::wait(false)){
var_dump($res);
}
});