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. //var_dump($process);
    15. $pid=$process->start(); //开启子进程
    16. $workers[$pid]=$process;
    17. $process->write('hello'); //主进程当中写入数据到子进程管道当中
    18. //echo $process->read().PHP_EOL; //同步阻塞
    19. //读事件监听,读取内容变成异步读取,在事件触发时才会调用
    20. swoole_event_add($process->pipe,function ($pipe) use($process){
    21. echo $process->read().PHP_EOL;
    22. swoole_event::del($process->pipe);
    23. });
    24. }
    25. //子进程创建成功之后要执行的函数,在闭包函数当中执行的逻辑就是在子进程当中执行
    26. function my_process($worker){
    27. // echo '子进程id'.$worker->pid.PHP_EOL;
    28. echo "来自主进程的消息:". $worker->read().',来自管道'.$worker->pipe.',当前的进程id为'.$worker->pid.PHP_EOL;
    29. sleep(1);
    30. $worker->write('主进程你好');
    31. }