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