首页 > 系统相关 >swoole运行Master 进程、Reactor 线程、Worker 进程、Task 进程、Manager 进程的区别与联系

swoole运行Master 进程、Reactor 线程、Worker 进程、Task 进程、Manager 进程的区别与联系

时间:2024-01-05 16:25:31浏览次数:32  
标签:Task Reactor Worker 线程 进程 Master PHP

Master 进程、Reactor 线程、Worker 进程、Task 进程、Manager 进程的区别与联系

Master 进程

Master 进程是一个多线程进程

Reactor 线程

Reactor 线程是在 Master 进程中创建的线程
负责维护客户端 TCP 连接、处理网络 IO、处理协议、收发数据
不执行任何 PHP 代码
将 TCP 客户端发来的数据缓冲、拼接、拆分成完整的一个请求数据包

Worker 进程

接受由 Reactor 线程投递的请求数据包,并执行 PHP 回调函数处理数据
生成响应数据并发给 Reactor 线程,由 Reactor 线程发送给 TCP 客户端
可以是异步非阻塞模式,也可以是同步阻塞模式
Worker 以多进程的方式运行

TaskWorker 进程

接受由 Worker 进程通过 Swoole\Server->task/taskwait/taskCo/taskWaitMulti 方法投递的任务
处理任务,并将结果数据返回(使用 Swoole\Server->finish)给 Worker 进程
完全是同步阻塞模式
TaskWorker 以多进程的方式运行

Manager 进程

负责创建 / 回收 worker/task 进程

他们之间的关系可以理解为 Reactor 就是 nginx,Worker 就是 PHP-FPM。Reactor 线程异步并行地处理网络请求,然后再转发给 Worker 进程中去处理。Reactor 和 Worker 间通过 unixSocket 进行通信。

在 PHP-FPM 的应用中,经常会将一个任务异步投递到 Redis 等队列中,并在后台启动一些 PHP 进程异步地处理这些任务。Swoole 提供的 TaskWorker 是一套更完整的方案,将任务的投递、队列、PHP 任务处理进程管理合为一体。通过底层提供的 API 可以非常简单地实现异步任务的处理。另外 TaskWorker 还可以在任务执行完成后,再返回一个结果反馈到 Worker。

标签:Task,Reactor,Worker,线程,进程,Master,PHP
From: https://www.cnblogs.com/qcy-blog/p/17947494

相关文章

  • 第5章 在 ASP.NET Core Web 应用进程中使用 EF Core
    本章涵盖在ASP.NETCore中使用EFCore在ASP.NETCore中使用依赖注入在ASP.NET核心MVC操作中访问数据库使用EFCore迁移更新数据库使用async/await提高可扩展性在本章中,您将使用ASP.NETCore构建一个真正的Web应用进程,将所有内容集成在一起。当然,使用ASP.N......
  • 全解在Hyperf中避免进程残留的问题
    进程残留问题的原因进程资源未释放进程残留问题的原因主要是由于进程在运行过程中未能正确释放所占用的资源。这可能是由于代码逻辑错误、异常退出、资源管理不当等原因引起的。具体来说,进程资源未释放可能包括但不限于各种文件句柄、数据库连接、网络连接等。当这些资源没有被及时......
  • 2038年MySQL5.7和MariaDB 10.6自动终止服务进程。MySQL 8.0.31未受影响。
    2038年MySQL5.7和MariaDB10.6自动终止服务进程。MySQL8.0.31未受影响。14年内,必须升级MySQL5.7数据库,重要的事情说三遍。见下面截图[Warning]Currenttimehasgotpastyear2038.Validatingcurrenttimewith5iterationsbeforeinitiatingthenormalservershutdownpr......
  • 技术大拿私房课:掌握Task、Thread、ThreadPool的终极秘籍!
    大家好,我是小米!在这个充满技术和创新的时代,作为一名喜欢分享的技术探索者,我想和大家聊一聊一些在社招面试中常常被提到的热门话题——task、thread、threadpool。这是一组关于并发编程的核心问题,也是我们在日常工作中不可避免要面对的挑战。Task是什么?首先,让我们从Task开始说起。在......
  • 记一次协程|线程|进程学习记录
    本章仅以获取图片来测试一下Py的同步、异步、协程、多进程、多线程的速度。凑个热闹即可,具体需要以实际情况为主。图片数量:257张执行操作:1、读取文件2、发起请求3、下载图片所需库:pipinstallhttpxpipinstallaiomultiprocesspipinstallaiofilespipinstallrequests同步def......
  • 文档型数据库的发展进程
    随着信息技术的不断发展,数据库在企业信息化建设中扮演着关键的角色。MongoDB作为国外主流的文档型数据库,一直以来在国际市场中广受欢迎。近年来,随着数字化转型的深入推进,中国数据库产业迅速崛起并取得了显著的进步。在这一发展潮流中,国产数据库正逐渐走进众多企业的应用领域。Mongo......
  • Windows系统进程svchost.exe在后台偷偷下载数据消耗流量
    手机开热点给电脑用,发现电脑网络很慢,用360流量防火墙检查流量情况,发现svchost.exe一直在偷偷搞我流量,整了1个多G,心痛。又是流氓东西。网上查了一下,svchost.exe是系统进程,还不能随便删除停用啥的,于是只能想办法禁止它使用网络。目前我的处理方法是在360流量防火墙上把svchost.exe的......
  • 如何在PostgreSQL中管理锁定的表和进程
    在使用PostgreSQL数据库时,可能会遇到一种情况:某些进程锁定了特定的表,影响了数据库的正常操作。这时,了解如何查找并管理这些锁定进程是非常重要的。下面是一些步骤和注意事项,帮助您处理这种情况。步骤1:查找锁定的表和进程首先,您需要确定哪些进程正在锁定您关心的表。可以通过以下SQL......
  • 如何在Windows中终止占用特定端口的进程
    当您在Windows系统中遇到端口冲突或需要手动管理某些服务时,可能需要终止占用特定端口的进程。例如,如果您发现端口8072被占用,而您需要该端口来运行您的应用程序,您可以通过以下步骤来解决这个问题。步骤1:查找占用端口的进程首先,您需要打开命令提示符。这可以通过在开始菜单搜索“cmd......
  • 管道进行进程间通信(上)
    管道进行进程间通信在posix和systemV标准还没有出现的时候,进程间是如何进行通信的呢?这就要借助于我们今天学习的这个东西了。在进程间通信的标准没有出现之前,在os中就已经存在了文件了。而管道就是基于文件的一种进行进程间通信的方式。什么是管道首先一个文件是可以被一个进程打......