文档章节

Swoole的work进程详解,文档来自官网

M
 MikeMei
发布于 2016/09/07 14:58
字数 451
阅读 99
收藏 0

Swoole进程模型

首先,我们需要了解一下Swoole的进程模型。Swoole是一个多进程模式的框架(可以类比Nginx的进程模型),当启动一个Swoole应用时,一共会创建2 + n + m个进程,其中n为Worker进程数,m为TaskWorker进程数,2为一个Master进程和一个Manager进程,它们之间的关系如下图所示。

其中,Master进程为主进程,该进程会创建Manager进程、Reactor线程等工作进/线程。

+

  • Reactor线程实际运行epoll实例,用于accept客户端连接以及接收客户端数据;
  • Manager进程为管理进程,该进程的作用是创建、管理所有的Worker进程和TaskWorker进程。

Worker进程简介

Worker进程作为Swoole的工作进程,所有的业务逻辑代码均在此进程上运行。当Reactor线程接收到来自客户端的数据后,会将数据打包通过管道发送给某个Worker进程(数据分配方法见dispatch_mode)。

Worker进程生命周期

一个Worker进程的生命周期如图所示:

st=>start: Create
start=>operation: onWorkerStart
recv=>operation: onReceive/onConnect/onClose
op=>operation: Receive and Handle Data
cond=>condition: Max Request or Error
stop=>operation: onWorkerStop
e=>end: Stop

st->start->recv->op->cond
cond(yes)->stop
cond(no)->recv
stop->e

当一个Worker进程被成功创建后,会调用onWorkerStart回调,随后进入事件循环等待数据。当通过回调函数接收到数据后,开始处理数据。如果处理数据过程中出现严重错误导致进程退出,或者Worker进程处理的总请求数达到指定上限,则Worker进程调用onWorkerStop回调并结束进程。

© 著作权归作者所有

共有 人打赏支持
上一篇: Task Worker进程
下一篇: Linux 信号含义
M
粉丝 0
博文 58
码字总数 16294
作品 0
深圳
高级程序员
私信 提问
微信小程序WebSocket开发

微信小程序WebSocket开发 让我们来实现一个简单的微信小程序WebSocket。WebSocket是一种没有被规范化的网络协议,不过网络上又有文章说是2011年被国际化。不过不管怎么样它摆脱了Http的无状态...

王And木
2018/05/31
0
0
IMI v0.0.2 支持 PHP 7.0 + Swoole 4.0,引入 Redis 模型

更新内容 * 框架依赖更新:php >= 7.1 + swoole >= 4.0.0 (之前为 php 7.0 + swoole 2.2.0) * 新增 Redis 模型 * 新增双驼峰转换方法 * 新增文件,目录创建操作方法 * 新增session操作类自...

宇润
2018/06/25
909
4
EasySwoole框架与Egg.js框架查询Mysql 性能比较

鉴于最近前端er 因为好不容易有了一个node ,终于可以脱离浏览器独立运行得高潮点,那么现在就来测试下node 与swoole 的真实情况 首先swoole 有众多框架,基本都大同小异,这里就选一个比较简...

福嘞娃
2018/05/18
0
0
php异步高并发扩展 swoole-1.6.11 版发布

简介: swoole是一个php版本的异步、高并发扩展,是国人被php官方pecl包收录的力作之一。 很高兴的通知大家,1.6.11版本发布了。 内核更新: - Disable by default async_mysql (默认关闭asy...

半桶水_桶哥
2014/03/04
2.4K
14
imi v0.0.9 支持 Swoole 4.1.0 一键协程化,40 余项改进

v0.0.9 更新内容: 新增: 适配支持 Swoole 4.1.0 一键协程化 新增进程池支持 新增模型生成时,如目录不存在则自动创建 新增ProcessManager::runWithManager方法,可以在IMI.SERVERS.CREATE....

宇润
2018/08/24
607
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么强烈建议大家使用枚举来实现单例

关于单例模式,我的博客中有很多文章介绍过。作为23种设计模式中最为常用的设计模式,单例模式并没有想象的那么简单。因为在设计单例的时候要考虑很多问题,比如线程安全问题、序列化对单例的...

群星纪元
27分钟前
8
0
Confluence 6 超过当前许可证期限进行升级

这个页面将会对你在进行 Confluence 升级的时候超过了当前许可证的期限进行升级的情况。 许可证警告 在升级的过程中,你将会在 Confluence 的应用程序日志(log file)中看到类似下面的错误提...

honeymoose
39分钟前
2
0
顶尖战略咨询公司常用分析模型

1、KANO模型 日本教授狩野纪昭(Noriaki Kano)构建出的kano模型。将影响用户满意度的因素划分为五个类型,包括: 魅力因素:用户意想不到的,如果不提供此需求,用户满意度不会降低,但当提供...

Moks角木
55分钟前
2
0
Linux iptables之mangle表使用案例

mangle表的用途 mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由。 mangel表使用示例 示例1-策略路由1 内网的客户机通...

月下狼
今天
3
0
OSChina 周日乱弹 —— 兼职我想去学学布偶戏

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy : 《火炎 - 女王蜂》 《火炎 - 女王蜂》 手机党少年们想听歌,请使劲儿戳(这里) @小鱼丁 :还在睡觉突然接到一个小哥哥电话“x...

小小编辑
今天
223
8

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部