目前php通信服务框架最流行的有wwoole与workerman,swoole是有C语言开发的php扩展类,而workerman是纯PHP开发框架,可能swoole比workerman出名,在百度、腾讯公司都有在使用,使用频率也比较高,但workerman也有很多项目在用,哪到底谁能更胜一筹呢?

首先我们一起来了解一下swoole:

Swoole是面向生产环境的 PHP 异步网络通信引擎使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。

Swoole 使用纯 C 语言编写,提供了 PHP 语言的异步多线程服务器,异步 TCP/UDP 网络客户端,异步 MySQL,异步 Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。

除了异步 IO 的支持之外,Swoole 为 PHP 多进程的模式设计了多个并发数据结构和IPC通信机制,可以大大简化多进程并发编程的工作。其中包括了并发原子计数器,并发 HashTable,Channel,Lock,进程间通信IPC等丰富的功能特性。

Swoole2.0 支持了类似 Go 语言的协程,可以使用完全同步的代码实现异步程序。PHP 代码无需额外增加任何关键词,底层自动进行协程调度,实现异步。

接下来我们再来聊一聊Workerman:

Workerman是一款开源高性能异步PHP socket即时通讯框架。

支持高并发,超高稳定性,被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mysql、异步Redis、异步Http、MQTT物联网客户端、异步消息队列等众多高性能组件。

Workman拥有以下几点特性:

1.纯PHP开发,多进程支持,支持php7,支持hhvm
2.支持TCP/UDP,单机可支持数百万以上TCP长连接
3.支持分布式部署,集群能支持数百万甚至更高的并发TCP连接
4.支持libevent事件触发网络库
5.支持热更新及服务器平滑重启
6.拥有异步Mysql、Redis、Dns等众多高性能组件

性能上Swoole毕竟是C语言开发的,在某些地方如内存管理、数据结构、通信协议解析上肯定要比PHP开发的workerman高。

功能上swoole提供的高级特性很多,列举几个workerman没有的吧,比如SSL/TLS隧道加密、http2.0、异步mysql驱动、异步redis驱动、异步的http/websocket客户端、process、lock、atomic、table。另外Swoole 2.0内置了PHP原生协程的支持,PHP代码也可以使用类似于Go语言的协程来实现高并发的网络服务器。

外部依赖上workerman需要依赖很多额外的第三方PHP扩展来实现,局限性比较大,这些扩展并非是PHP官方维护的,维护性方面良莠不齐,有些扩展连PHP7都不支持,数年没人维护。而Swoole基本上无依赖,底层的代码全部可控。

开发维护方面,Swoole的开发团队目前有大概18人左右,开发者基本上都是来自腾讯、百度、阿里、滴滴、微博等国内一线互联网企业,支持维护的团队更稳定。

如果说 Swoole 2 以前,swoole 和 workerman 的差别可能就是一个是 C 扩展,一个是 PHP 代码的区别,类似 CI 与 Phalcon。

但 Swoole 4 已经与 workerman 完全不是一个等级了,Swoole 4 已然成为了核弹,而 workerman 还是那个 TNT 炸药。

Swoole 4 带来了与 Golang 几乎一致的 go + chan + defer 协程,并 Hook 的 PHP Stream 直接让 PDO/Redis 等扩展加入了协程的豪华套餐,现在的 Swoole 几乎等同一个动态单核版本的 Golang,已经能处理非常多的后端计算场景。

无法达到的,需要非常扎实的系统开发能力,也需要对 PHP 的底层 API 非常了解,Swoole 团队令人十分倾佩。

另外因为 Swoole 有创造的能力,workerman 则只能使用内置扩展提供的现有功能开发,就如同 MixPHP 基于 Swoole 开发,也只能通过 Swoole 提供的现有功能开发,如果扩展没有提供某些功能特性,有些想法就实现不了,好在 Swoole 团队沟通效率非常高,基本上我们一些问题都能及时的给予答复,使用 PHP 内置扩展的 workerman 就没那么好运了,扩展团队并不会因为 workerman 而修改扩展的某项功能。

有些人说 Swoole 文档不好,在我看来这个根本不成立,我开发一个完整的框架都源于 Swoole 文档,在我看来应该是大多 PHPer 经验都集中在如何实现应用需求,而且又几乎都是编写同步程序,导致知识体系非常片面,从而导致看不懂,这方面 Javaer 则更好一些,由此可见并不是文档的问题。

当然workerman的优势是它完全使用PHP代码实现,开发者可以直接看它的源码。有特殊需求也可以直接改源码来实现。如果换成swoole就不是那么简单了。workerman做的事情更多一些,即是框架又是工具和完整的解决方案,对于没有太多后端编程功底的程序员也来说确实会容易很多。而swoole实际上只是一个底层库,不是拿来可用的完整产品,基于swoole有很多PHP的框架和程序,比如tsf、zan php framework、hprose-swoole、zphp、swoole/framework、blink、dorarpc、SwooleDistributed等等,普通开发者可以直接基于这些项目进行开发。

workerman不需要了解太多通信服务,底层框架也不用学习,更不用借助PHP环境开发,可以独立运行,workerman提供完整的通信协议框架,也可以自定义开发协议,所以workerman比较适合新手PHP程序员,workerman资料文档相对来说比swoole多。workerman缺点是需要安装扩展类比较多,在高并发性能,稳定性比不上swoole。

综上所述swoole与workerman其实各有千秋,在一般项目中根本看不出来哪个比较好用,所以不是开发大型类型网站的,新手可以选择workerman提高开发速度,老手选择swoole可以证明自己的实力。世界上没有最好的技术,主要看你要开发什么、团队或个人的实际情况如何,合适的才是最好的。

Swoole vs Workman相关推荐

  1. swoole-了解swoole

    初识swoole swoole官网:https://www.swoole.com/ 可能需要掌握一些tcp/ip 入门书籍:<tcp/ip网络编程(尹圣雨 韩)>. 深入书籍:<un ...

  2. cygwin swoole_swoole入门--------基础概念

    学习swoole我们要首先了解下网络通信架构 B/S结构 (Browser/Server):又称浏览器/服务器模式. 这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发.维 ...

  3. php学历要求_“最好编程语言” PHP面试的两三事

    IT服务圈儿 有温度.有态度的IT自媒体平台 经过近2个月的面试,总算顺利拿到了offer.每天在Boss直聘上刷简历,不断地前程无忧上海投的事情总算可以告一段落了.不得不说,最终还是在前程无忧上的1 ...

  4. PHP真的没落了吗??

    PHP真的没落了吗?? 适合的才是最好的,永远相信这句话! 我开发做了五年多了,现在是前端也在写,后端也在写.唉~~~我真的是苦命的孩子!!这让我想起了周星驰电影说的一句贱贱的话:"要么卷死 ...

  5. PHP实现单人多人聊天源码免费分享 | 电脑报修系统

    源码清单 1. 简易版登陆式聊天源码. 2. 电脑报修轻系统源码. 3. 关注下面公众号回复"聊天",免费获取. 聊天系统 虽然微信,QQ是即时通讯的元老.但是他们限制很多,所以很 ...

  6. 用webstorm做一个跑马灯_用Workman做一个聊天室

    php中文网最新课程 每日17点准时技术干货分享 为什么要写这篇文章? 我学习Workman好几次了,每次都失败(没做成想要的功能,原谅我比较笨).但是这次也花了好几个小时,把之前没做成的功能实现了. ...

  7. php swoole 游戏框架,Swoole 高性能php框架

    这篇文章主要介绍了关于Swoole 高性能php框架,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 之前学习过了, nodejs ,性能强大. 今年的目标是深入workman,和运用s ...

  8. Swoole学习-Swoole入门指南

    初识Swoole Swoole官网:https://www.swoole.com/ Swoole官方文档:https://wiki.swoole.com/ 预备相关知识素材推荐 入门书籍:<tc ...

  9. php workman视频,PHP即时通讯系统单人多人聊天IM视频会议实时音视频红包功能

    PHP即时通讯系统单人多人聊天IM视频会议实时音视频红包功能 介绍 workman构建即时通讯,含单人多人聊天,IM视频会议,实时音视频以及红包转账功能 软件架构 软件架构说明 1.后台采用PHP的w ...

  10. Swoole入门介绍

    Swoole虽然是标准的PHP扩展,实际上与普通的扩展不同.普通的扩展只是提供一个库函数.而swoole扩展在运行后会接管PHP的控制权,进入事件循环.当IO事件发生后,swoole会自动回调指定的P ...

最新文章

  1. Repeater控件的分页问题
  2. Github开源趋势榜Top 1:英伟达升级发布二代StyleGAN,效果更完美
  3. 查询oracle的联机日志文件,查询Oracle日志文件的方法(摘自http://database.51cto.com/art/201010/231519.htm)...
  4. 深入理解Objective-C:Category
  5. 新疆兵团谋定丰收美景-万祥军:对话农民丰收节交易会
  6. linux平滑升级nginx,Nginx的平滑重启和平滑升级,nginx
  7. Java知识整理——反射
  8. php7不解析下载,Centos7 配置apache和php,登陆web提示下载,不解析php文件
  9. 浪潮之巅阅读笔记02
  10. hdu 1754 I hate it (线段树)
  11. Ubuntu22 超nice的QQ(Icalingua++)安装步骤,拒绝走弯路!!
  12. sai文字图层、钢笔图层如何转普通图层
  13. ccxprocess启动项可以禁用么_启动项禁用
  14. python中print格式_python中print输出格式有哪些
  15. 【CVE-2021-1675】Windows Print Spooler RCE
  16. 2020年chx的计算机保研之路系列(5)——夏令营面试问题及感想杂谈
  17. Git在同一台电脑上连接多个仓库
  18. 某海外电商平台参数分析 ECDSA签名(js逆向)
  19. 【EndNote小技巧 - 文档文献的导出 | 设定引文放置位置 | 文献引用设置超链接】
  20. 如何初始化一个指针数组

热门文章

  1. PHP file_get_contents函数详解
  2. 【Unity】项目源码——2D横版过关类游戏《A_Standard_Runner》
  3. iOS发展史:从iPhone OS 1.0到iOS10 终于支持骚扰拦截了
  4. 设备 naa.6006016004102900751132ac8de3e211 性能降低。
  5. ps scavenge java_JVM源码分析(四)Parralel Scavenge 收集器工作流程
  6. 华硕重装后进入bios_华硕台式机重装系统win10按哪个键进入bios设置
  7. ssms 导出mysql_怎样使用SSMS管理器导出数据表 用SSMS管理器导出数据表的方法
  8. [转]AndroidTolls国内镜像
  9. android背光,Android背光亮度调节
  10. Blender 2.8 白色背景的处理方式