二十八、Swoole 基础学习笔记 - Swoole Process\Manager 进程管理器

作者: 温新

分类: 【Swoole 系列】

阅读: 1631

时间: 2023-03-13 12:04:59

hi,我是温新,一名PHPer

文章基于 Swoole 5.0.1 版本编写。

学习目标:自己同手写案例

说明:本篇文章结合官方文档编写及参考网络资料编写,虽非全部原创,但也是结合了自己的理解,若转载请附带本文 URL,编写不易,持续编写更不易,谢谢!

进程管理器基于 Process\Pool 实现,可以管理多个进程。相比与 Process\Pool,可以非常方便的创建多个执行不同任务的进程,并且可以控制每一个进程是否要处于协程环境。

基础案例

<?php

// 28-swoole-process-manager.php

// 实例化进程管理器
/**
* $ipcType 同 Process\Pool 的 $ipc_type 一致【默认为 0 表示不使用任何进程间通信特性】
* $msgQueueKey 消息队列的 key,和 Process\Pool 的 $msgqueue_key 一致
*
**/ 
$pm = new Swoole\Process\Manager();

// 添加一个工作进程
$pm->add(function (Swoole\Process\Pool $pool, $workerId) {
    echo $workerId . PHP_EOL;
    while(true) {
    }
});

// 启动工作进程
$pm->start();

循环添加多个进程

<?php

// 28-swoole-process-manager-1.php

$pm = new Swoole\Process\Manager();

for ($i = 0; $i < 5; $i++) {
    $pm->add(function (Swoole\Process\Pool $pool, $workerId) {
        echo $workerId . PHP_EOL;
        while(true) {
        }
    });
}

$pm->start();

相关方法

add

含义:增加一个工作进程。

Swoole\Process\Manager->add(callable $func, bool $enableCoroutine = false): self;

参数:

  • func:当前进程执行的回调函数
  • enableCoroutine:是否为这个进程创建协程来执行回调函数

addBatch

含义:批量增加工作进程。

Swoole\Process\Manager->addBatch(int $workerNum, callable $func, bool $enableCoroutine = false): self

示例

$pm->addBatch(5, function (Swoole\Process\Pool $pool, $workerId) {
    echo $workerId . PHP_EOL;
    while (true) {
    }
});

start

含义:启动工作进程。

Swoole\Process\Manager->start(): void

setIPCType

含义:设置工作进程之间的通信方式。

Swoole\Process\Manager->setIPCType(int $ipcType): self;

参数:

  • ipcType:进程间通信的模式

getIPCType

含义:获取工作进程之间的通信方式。

Swoole\Process\Manager->getIPCType(): int;

setMsgQueueKey

含义:设置消息队列的 key

Swoole\Process\Manager->setMsgQueueKey(int $msgQueueKey): self;

getMsgQueueKey

含义:获取消息队列的 key

Swoole\Process\Manager->getMsgQueueKey(): int;

本篇文章到此结束,下面将进入协程的学习。

请登录后再评论