swoole之创建进程,进程事件

<?php
/**
 * Created by PhpStorm.
 * User: Ty_Ro
 * Date: 2019/1/31
 * Time: 17:32
 */

//创建进程
//进程对应的执行函数
function doProcess (swoole_process $worker){
    echo "PID",$worker->pid,"\n";
    sleep(10);
}

//创建进程
$process = new swoole_process("doProcess");

$pid = $process->start();

$process = new swoole_process("doProcess");

$pid = $process->start();

$process = new swoole_process("doProcess");

$pid = $process->start();


//等待结束
swoole_process::wait();

进程事件

<?php
/**
 * Created by PhpStorm.
 * User: Ty_Ro
 * Date: 2019/2/4
 * Time: 0:21
 */
$workers = [];  //进程 数组
$worker_num = 3;  //创建进程的数据量
//创建 启动进程

for ($i=0;$i<$worker_num;$i++){
    $process = new swoole_process('doProcess'); //创建单独新进程
    $pid = $process->start(); // 启动进程,并获取进程ID
    $workers[$pid] = $process; //存入进程数组
}

// 创建进程事件,向每一个子进程添加需要执行的动作
function doProcess(swoole_process $process){
    $process->write("PID: $process->pid"); //子进程写入信息 ? pipe
    echo "写入信息: $process->pid $process->callback";
}
// 添加进程事件,向每一个子进程添加需要执行的动作
foreach ($workers as $process){
    //添加
    swoole_event_add($process->pipe,function ($pipe) use ($process){
        $data = $process->read(); //能否读取数据
        echo "接受到 : $data \n";
    });
}

进程间通讯

信号触发

猜你喜欢

转载自blog.csdn.net/qq_40876291/article/details/86761979