swoole多进程

<?php
echo posix_getpid().PHP_EOL;
$info = array(
    "sendmail"=>1,
    "mailto"=>"12345@qq.com",
    "sendsms"=>1,
    "smsto"=>"123456"
);
echo "start:".date("Y-m-d H:i:s").PHP_EOL;
$mail_process = new swoole_process('sendMail',true);
$mail_process->name('mail pro');
$mail_process->start();
$sms_process = new swoole_process('sendSMS',true);
//设置进程名(mac不支持)
$mail_process->name('sms pro');
$sms_process->start();
//主进程输出子进程范围内容
echo $mail_process->read();
echo PHP_EOL;
echo $sms_process->read();
echo PHP_EOL;
echo "end:".date("Y-m-d H:i:s").PHP_EOL;
//并行函数
function sendMail(swoole_process $worker){
    global $info;
    if($info['sendmail']==1){
        $worker->write("{$worker->pid}send mail to ".$info['mailto']);//管道通信
    }
}
function sendSMS(swoole_process $worker){
    global $info;
    if($info['sendmail']==1){
        sleep(2);
        $worker->write("{$worker->pid}send sms to ".$info['smsto']);
    }
}
//添加这个作为监护进程.这样子进程执行完了父进程不会退出
swoole_process::signal(SIGCHLD, function($sig) {
  echo posix_getpid().PHP_EOL;        
  //必须为false,非阻塞模式
  while($ret =  swoole_process::wait(false)) {
        print_r($ret);    
      echo "PID={$ret['pid']}".PHP_EOL;
  }
});
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值