热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

swoole简单的流程图(Worker的分配)

本文将给大家分享一个简单





本文将给大家分享一个简单的swoole流程图







WorkerStart 的回调






$serv->on('WorkerStart',function ($serv,$worker_id){
echo "启动了一个Worker";
});











Worker进程的任务分配模式是?







worker进程数据包分配模式



dispatch_mode = 1 //1平均分配,2按FD取摸固定分配,3抢占式分配,默认为取模(dispatch=2)







抢占式分配,每次都是空闲的worker进程获得数据。很合适SOA/RPC类的内部服务框架



当选择为dispatch=3抢占模式时,worker进程内发生onConnect/onReceive/onClose/onTimer会将worker进程标记为忙,不再接受新的请求。reactor会将新请求投递给其他状态为闲的worker进程



如果希望每个连接的数据分配给固定的worker进程,dispatch_mode需要设置为2







$serv->on('receive', function ($serv, $fd, $from_id, $data) {//接收到来自客户端信息的回调
$serv->send($fd, 'Swoole: '.$data);
$serv->tick(1000, function() use ($serv, $fd) {
$serv->send($fd, $serv->worker_id);
});
});
/*向客户端发送当前worker的ID,在设置为平均分配时,测试可以开启两个客户端,非常明显的就可以看出
是两个不同的worker进程发来的信息 $serv->send($fd, $serv->worker_id);*/




180609_NPoE_3529405.png



推荐阅读
author-avatar
robable004_96978
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有