消息队列分布式任务多进程处理

本文介绍了如何使用SwoolePHP扩展创建多进程的进程池,工作进程从Redis中按需读取任务并执行,主进程管理新的worker进程。涉及`workerStart`和`workerStop`事件监听以及进程间通信。

server
<?php
//多进程
$pool = new Swoole\Process\Pool(10);//进程池

//业务处理逻辑,时间触发

$pool->on('workerStart',function($p,$workerId){
//执行完业务逻辑就会关闭
echo $workerId,'启动',PHP_EOL;
//从redis中读物任务
$redis = new Redis();//每个进程独占一个连接资源
$redis->connect('127.0.0.1');
while(true){
var_dump($redis->rpop('yourkeyname'))
usleep(10000);
}
});

$pool->on('workerStop',function($p,$workerId){
echo $workerId,'关闭',PHP_EOL;
});

$pool->start();//启动


client
<?php
//多进程
$pool = new Swoole\Process\Pool(10);//进程池

//业务处理逻辑,时间触发

$pool->on('workerStart',function($p,$workerId){
//执行完业务逻辑就会关闭
echo $workerId,'启动',PHP_EOL;
//从redis中读物任务
$redis = new Redis();//每个进程独占一个连接资源
$redis->connect('127.0.0.1');
while(true){

usleep(10000);
}
});

$pool->on('workerStop',function($p,$workerId){
echo $workerId,'关闭',PHP_EOL;
});
//传递消息(命令),
$pool->listen('127.0.0.1',8089);//端口自定
$pool->start();//启动

 调用

主进程(管理进程)

工作进程(worker进程)

worker进程执行完毕,主进程就拉起一个新的worker进程

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值