workerman和swoole有什么区别
发布时间 - 2022-02-10 00:00:00 点击率:次区别:1、swoole是使用C语言实现的socket通信框架,而workerman是使用纯php实现的socket框架;2、workerman中socket是由worker进程负责的,swoole则是由主进程中的reactor线程来负责的。
本教程操作环境:Windows10系统、Swoole4版、DELL G3电脑
workerman和swoole有什么区别
workerman和swoole在现阶段很受争议,有时间你得认识认识,不然你就不是混php圈子的。swoole是使用C语言实现的socket通信框架,workerman则是使用纯php实现的socket框架,二者进程模型上也存在很多的不同。
master进程
这个进程比较复杂,也是我认为最核心的进程,这是一个包含多线程的进程,分别是一个主线程和n个reactor线程(数量可以配置)。
其中,主线程用于accept新的连接,然后评估一下每个reactor线程负责维护的连接数,然后分
配给数量最少的那个reactor线程,最大程度保证每个reactor线程的负载量是均衡的。
本质上讲,一旦一个socket可读或者可写了,就由reactor线程发送给worker进程或者发送会客户端。除此之外,主线程还负责对所有信号的接管,避免reactor线程收到信号的打扰中断。
说的洋气点儿就是:master进程负责了连接的accept、托管、socket的可读可写(数据的发送和接受),本质上讲,master进程负责了IO。还需要注意一点儿的是reactor线程是彻底的全异步非阻塞工作方式。
manager进程
manager进程是worker进程和taskworker进程的妈,说的洋气点儿就是manager进程fork出来了worker进程和taskworker进程,生出来了就得管,所以,manager进程得负责对worker进程和taskworker进程的抚养义务,具体包括监控它们的状态、当它们意*了后重新拉起一个新的进程(避免了僵尸进程)、平滑重启(就是传说中的reload)。
worker进程
worker进程是manager进程fork出来的,这个进程说白了就是搬砖干活(官方文档中屡次提到的业务代码),其实就是平时码的那些curd业务逻辑代码,懂了吧?只不过worker进程比较diao的是,这个进程可以用异步方式去工作,也可以用同步方式去工作。如果听不懂什么意思,那就先背过,先混个脸熟再说。
taskworker进程
taskworker进程(后文中称tasker进程)实际本质上也是worker进程,只不过是一种特殊的worker进程。如果你的worker进程中存在一些耗时耗力的操作,那么可以先抛给tasker进程,自己先去干别的,等tasker干完了,再由worker进程取回,非常diao。但是tasker进程只能工作在同步方式下,并不能使用异步。这就是为什么tasker进程不可以使用定时器,而worker进程可以使用定时器的原因。
简单总结混在一起说下这几种进程之间是怎么搭配起来干活的。见说来说,就是master进程就是接活儿的销售,但是具体干活则由worker进程来做,如果worker进程感觉到某些流程太繁忙复杂就可以让tasker进程来做。而manager进程就是后勤worker进程和takser进程的人力资源保障部,负责他们的生死存亡和吃喝拉撒。
workerman
而workerman的进程模型相对就要简单很多了,首先相对于swoole来说,workerman没有swoole中的reator线程,其次workerman没有用于处理普通业务的worker进程以及tasker进程。而workerman的话,socket是由worker进程负责的,swoole中则是由主进程中的reactor线程来负责的。而swoole在接受到数据后,可以通过自己的worker进程来处理业务(有点儿类似于fpm进程)。
workerman是一个高性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服务器、手机游戏服务器等。
workerman的目标是让PHP开发者更容易的开发出基于socket的高性能的应用服务,而不用去了解PHP socket以及PHP多进程细节。 workerman本身是一个PHP多进程服务器框架,具有PHP进程管理以及socket通信的模块,所以不依赖php-fpm、nginx或者apache等这些容器便可以独立运行
推荐学习: swoole教程
# swoole
# php
# c语言
# nginx
# 接口
# 线程
# 多线程
# 主线程
# 事件
# 异步
# apache
# rpc
# Workerman
# 是一个
# 则是
# 自己的
# 的是
# 是由
# 可以用
# 便可
# 来做
# 高性能
# 上讲
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
如何用低价快速搭建高质量网站?
智能起名网站制作软件有哪些,制作logo的软件?
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
Bootstrap整体框架之JavaScript插件架构
Laravel如何实现本地化和多语言支持?(i18n教程)
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
如何在云指建站中生成FTP站点?
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
香港网站服务器数量如何影响SEO优化效果?
高端云建站费用究竟需要多少预算?
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
如何在VPS电脑上快速搭建网站?
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
Bootstrap整体框架之CSS12栅格系统
如何在IIS中配置站点IP、端口及主机头?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
b2c电商网站制作流程,b2c水平综合的电商平台?
Laravel如何使用Sanctum进行API认证?(SPA实战)
微信小程序 闭包写法详细介绍
Laravel如何使用Gate和Policy进行授权?(权限控制)
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
装修招标网站设计制作流程,装修招标流程?
如何用已有域名快速搭建网站?
如何在云主机快速搭建网站站点?
电商网站制作价格怎么算,网上拍卖流程以及规则?
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
三星网站视频制作教程下载,三星w23网页如何全屏?
详解Oracle修改字段类型方法总结
如何用花生壳三步快速搭建专属网站?
如何基于云服务器快速搭建个人网站?
制作电商网页,电商供应链怎么做?
Laravel如何配置Horizon来管理队列?(安装和使用)
深圳网站制作平台,深圳市做网站好的公司有哪些?
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
无锡营销型网站制作公司,无锡网选车牌流程?
Android Socket接口实现即时通讯实例代码
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
Laravel如何与Pusher实现实时通信?(WebSocket示例)
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
如何用PHP快速搭建CMS系统?
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
如何批量查询域名的建站时间记录?
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
教你用AI润色文章,让你的文字表达更专业
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
详解Android图表 MPAndroidChart折线图

