二十八、Swoole 基础学习笔记 - Swoole Process\Manager 进程管理器
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;
本篇文章到此结束,下面将进入协程的学习。
请登录后再评论