搜索
首页头条workerman和swoole性能谁更好?如何选择?

workerman和swoole性能谁更好?如何选择?

Dec 01, 2022 am 10:00 AM
phpworkermanswoole

workerman和swoole性能谁更好?如何选择?

workerman 对比 swoole 实际开发项目中,你会选择哪个?对于新手学哪个较好,有什么建议吗?

网上有评论说swoole性能比workerman高不少,真的是这样吗?

我们先来看下各自介绍:

workerman:开源高性能PHP应用容器( github 10.2k)

workerman和swoole性能谁更好?如何选择?

workerman 是纯php写的网络框架,支持高并发,超高稳定性,它大大突破了传统PHP应用范围,被广泛的用于即时通讯、APP开发、小程序开发、聊天室、手游服务端、网络游戏、硬件通讯、车联网、智能家居、物联网等领域的开发。【workerman教程

支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议,拥有异步Mysql、异步Redis、异步Http、MQTT物联网客户端、异步消息队列等众多高性能组件。

Swoole:PHP 协程框架(github 17.6k)

2.jpg

swoole是c/c++写的网络通讯扩展,Swoole 使 PHP 开发人员可以编写高性能高并发的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服务,让 PHP 不再局限于 Web 领域。

Swoole 可以广泛应用于互联网、移动通信、云计算、 网络游戏、物联网(IOT)、车联网、智能家居等领域。使用 PHP + Swoole 可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。

两者功能类似

那究竟哪个更好一些?我们该如何选择呢?

我们一起来听听PHPer的使用感受和看法

一:学习成本

首先我们阐述下php中文网的观点:

对于新手,我们更倾向于推荐workerman:简单,易用,扩展性好,可快速上手!php 语言的价值不就是简单易用吗?

目前关于workerman最新的课程全网很少,所以php中文网近期精心录制了一套:PHP workerman 基础到实战课程,在今天上线了!

希望能够帮助到同学们,提升自己的技能!

课程名称:

PHP Workerman+ThinkPHP6 即时通讯聊天系统

3.png
(ThinkPHP6+Workerman/websocket)

本课程是基于php workerman创建websocket服务开发的实时web聊天系统,课程内容主要包括:

1、websoket通信原理以及与http的关系 

2、workerman搭建websoket服务 

3、QQ群聊原理与实现

4、Workerman消息推送与定时器

5、一对一私聊与客服随机分配

6、客服后台获取在线客户列表等

7、聊天消息存储等内容。

4.png

感兴趣的同学,赶紧上车,锁定上新活动价!

限时折扣活动:
原价¥399元,限时折扣价¥189元,12.8号截止!

全部课程预计12.8号之前更新完成,届时价格会有一定幅度上调

开通地址↓↓↓
https://www.php.cn/course/1475.html

1669859115743756.jpg
课程咨询+课件资料领取

网友们观点:

网友评价1:

如果你之前没有过网络编程或多进程开发经验的话,我的建议是你先从workerman入手,毕竟workerman是纯PHP代码实现的,你在深入理解其原理和处理问题时不会有太大的障碍。

通过对workerman的深入学习,你可以学习到网络编程相关的基础知识,这种程序是如何设计实现的,当中需要注意哪些细节。你还可以学习到如何开发多进程程序,进程间如何管理和通信。

当你这些了解清楚后,你再过渡到swoole会觉得门槛没有那么高,如果你直接上手就swoole的话,至少进程间的管理和通信都需要你自己去实现,你可能连思路都没有。

由浅入深,先从基础开始,再向高级进阶。

网友评价2:

swoole 是作为 php 的扩展,不依赖其他扩展,底层是 c,程序中直接调用,性能较高。workman 是用原生 php,依赖其他扩展,需要下载源码包。

前者可以理解为 swoole 是提供给 php 的 api ,原生度比较高,所以没有封装实践中的 业务逻辑,需要自己开发。后者对某种业务需求有封装,更容易上手。

本人曾经学习 swoole 个把月,感觉比较难驾驭,需要掌握比较多的基础知识,实际工作中运用较少,但是感觉值得学习。

总之,用哪个看用来做什么,大众需求, workman 可能开发成本更低,有些特定需求,也可以研究研究 swoole。

网友评价3:

推荐 workerman!swoole 那套直接 c 拓展的不适合进阶新手,新手要的是渐进式,稳定性,循序渐进,先掌握一个范式,再一步一步来。

workerman 也出了官方 web 框架 webman,压测排名在 swoole 之上,毫不夸张的说,workerman 目前是最成熟,成本最低的 PHP 解决方案,门槛还低。

网友评价4:

swoole是由C语言开发的php扩展类,就性能而言swoole具有优势,对PHP程序员有一定的要求,了解底层通信服务开发,需要学习的知识比较多,swoole一般适合老手开发。workerman纯php开发框架,很容易上手。号称只要你会php,你就使用它开发socket应用服务。

建议先学习workerman,在学习swoole。

网友评价5:

workerman是纯PHP实现的常驻内存框架,同步阻塞模式,先学习这个方便对常驻内存模式有一定的了解,对内存泄露有一定的了解。

workerman熟悉后再来学习swoole,swoole除了常驻内存,还有就是协程,这个在传统开发模式中是不存在的。协程类似线程,开发过程中需要主要各个协程中间的数据之间的操作问题。

二:实际应用

网友评价1:

我的一个开源项目用的就是 workerman 项目查看,依赖的环境比较少,开发难度小。如果不是上万的并发建议 workerman。但是我的经验表明 95% 的项目都不会有上万的并发。初学者我也建议用 workerman。swoole 你也可以同时学习,毕竟协程更节省硬件资源。还有就是 workerman 的作者超级有耐心回复各种问题,从来没有见过如此热心的

网友评价2:

swoole 是扩展,在使用 workerman 的同时,若你需要用到 swoole 的东西,同样也可以使用,而且从应用角度来说,我更喜欢 workerman gateworker。这些能直接解决很多问题,避免从基础进行研究

网友评价3:

workerman 更简单稳定,考虑了很久还是用workerman , swoole目前太乱了,生产环境稳定毕竟用的php原生东西 swoole玩了一段时间 坑太多了。

网友评价4:

Swoole的部署折腾了我一个礼拜,终于能跑通了,再想想还要很多第三方类库和扩展要继续折腾,还是算了。

Gatewayworker直接用XFTP工具把文件夹拖进去,然后start就好了,省心多了。

对于我这种小白来说,不考虑什么集群,什么上千万的并发,什么容器,我选Gatewaywroker。

网友评价5:

个人觉得swoole和workerman都能解决高并发io问题,但用了两种思路。不存在谁高级,谁低级。用C写PHP扩展解决问题就显得有多牛逼了,那可不见得。用C写PHP扩展,对比的应该是C程序员,而不是PHP程序员,那么C语言就比PHP语言高级,那这么说的话大家都用C开发网站得了呗。

新课推荐:

7.png

三:性能

网友评价1:

说swoole比workerman好,是因为评论的人没用过workerman,他只是片面的认为c++比php快,就认为其程序框架也是这样。

然而,workerman只载入解析一次php文件,然后便常驻内存,极大的减少了磁盘IO及PHP中请求初始化、创建执行环境、词法解析、语法解析、编译opcode、请求关闭等诸多耗时过程。所以纯碎从语言层面比较,更应该是c++和机器码的区别。

两者都是非常优秀的开源框架,只是看自己更喜欢折腾c++还是php罢了

网友评价2:

其实性能差不多,workerman更稳定,发现问题,更易维护

网友评价3:

从跑分来每个指标workerman都比swoole略高一些,总体来看看swoole和workerman结果差不多,不过这仅仅是跑分,真实效果还是要看实际项目。

网友评价4:

我觉得是不是都搞错了对比双方

workman是PHP写的,但本质是用pcntl等扩展实现了功能

swoole是C/C++写的,但实际还是以PHP扩展形式出现

所以其实都是PHP扩展

所以其实比的是pcntl等扩展和swoole扩展的效能

所以workman不慢不是很正常么?

网友评价5:

https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=db&l=zik073-1r

这个是国外权威压测机构 www.techempower.com 第19轮压测,带数据库业务的,swoole用了数据库连接池+协程,workerman就是原始php mysql阻塞用法,结论仍然是二者性能差别不大,各项性能指标均是workerman好些,尤其是plaintext,比swoole高35%左右。当然,这个只是压测结果,仅有部分参考意义,不代表现实项目最终结果。

新课推荐:

8.png

四:生态

网友评价1:

因为项目需要, 智能家居一类的, 本来准备用C做, 想想swoole和workerman很火很成熟, 不少稳定应用场景了, 想想为什么不能用这俩试一下呢? C水平有限, 用PHP能满足需求多好?

所以今天大概了解了下swoole和workerman, 初步映象对swoole没有想象中那么好, 反而workerman让我非常惊艳...

先说swoole:

swoole, 官网顶部手册竟然打不开, 后来找半天找到一个手册. 你们这么nb团队为何不能把官网做的像样一点呢? 需要很多工作量吗? 至少把官网顶部那个手册改为正确地址好不好?遇到问题找了一圈没找到啥解决办法. 发了issues, 论坛也发帖了, 没啥反应...

再说workerman:

workerman例子很完善, 讲解详细, 比swoole好不少. 重要一点是用纯PHP就能实现如此之高性能php-cli在php5.3时代就已经成熟了, 一直没时间在此基础做大型项目, 老是感觉性能不行, workerman却让我惊艳.

workerman用到的pcntl, posix两个扩展也是PHP自带的扩展, 默认会编译进去, streams系列函数是PHP自带函数, 更没有扩展之说. 所以某人说的太夸张了. 并不需要不成熟第三方扩展, 这两个扩展是非常成熟的扩展, 稳定到进入PHP默认开启的扩展, streams甚至进入PHP基本函数了. 如果为了像Nginx一样开启Kqueue和Epoll则需要安装和swoole一样的pecl扩展:pecl-event. 此扩展也非常稳定了. 这些都是基本扩展, 不会不稳定更不会PHP7,PHP8不支持. streams, pcntl, posix, pecl-event其实对底层的浅封装, 性能没问题, 看你怎么用, 会不会用, workerman就用的很好。

最后说一下:

我不同意韩天峰说的swoole需要比较高超水平, 其实两者都是给你封装好, 拿来用就行. 但如果出现问题workerman可以去了解协议, 修改封装的PHP代码. swoole就没法修改了, 至少你要会C语言才能去修改, 这是很多phper不擅长的.

我暂时决定用workerman了, 因为出现上述那种问题我可以自己修改workerman的PHP代码解决. 而swoole是用C重新实现的, 很多坑要去完善, 而社区也不活跃, 没人理睬, 而我没精力去查C代码找原因. 发现很多人也是试验了swoole后发现还是workerman稳定些, 所以改用workerman了. 其实我还是希望swoole能快速发展的完善些.

以上纯属个人观点, 一切都是为了PHP能健康快速发展下去, 希望swoole越来越好...

网友评价2:

其实都差不多,如果直接基于swoole或者workerman开发,都不算容易。

但现在都可以基于框架开发,比如hyperf和webman,当然,如果你也试试imi,你会发现他俩在使用的时候,基本没区别。

Imi说,反正我都支持!

网友评价3:

workerman的文档做的非常好,例子也丰富很多,我觉得workerman更容易上手,而且比swoole稳定很多

网友评价4:

官方方案fpm+opcache+jit+长连接,或者workerman,稳如老狗,官方方案,有问题自己轻松解决。

实在没有办法可以引入第三方语言综合即可。如果你关注PHP官方的协程或者异步方案,可以浏览下Amphp作者推出的Fiber扩展,已经进入rfc阶段。

网友评价5:

workerman更符合php的精神,作为一个workerman一年多使用者,坚决支持workerman。而且workor真的特别认真,新手问题在论坛回复的也很及时,对新手友好度max。

精品课推荐:

1.ThinkPHP版:《PHP Workerman 基础与实战:即时通讯聊天系统(2022.11.30最新上线)

9.png
(原价¥399元,上新折扣价¥189元,仅限8天

开通地址↓↓↓
https://www.php.cn/course/1475.html

2.Laravel版:基于workerman仿百度商桥IM即时通讯(Laravel实战)(2020.10.12上线)

10.png
(原价¥299元,限时折扣价¥139元,仅限8天

开通地址↓↓↓
https://www.php.cn/course/1131.html

1669859115743756.jpg
课程咨询+课件资料领取

以上PHPer的观点你赞同吗?欢迎高手们来喷!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),