如何用好swoole/webman/workerman/hyperf呢

Webman框架的依赖

图片

  "require": {    "php": ">=7.2",    "workerman/webman-framework": "^1.5.0",//    "monolog/monolog": "^2.0"  },

图片

依赖的核心框架也是很久的了

webman-framework的核心依赖

图片

 "require": {    "php": ">=7.2",    "ext-json": "*",    "workerman/workerman": "^4.0.4 || ^5.0.0",//核心的依赖    "nikic/fast-route": "^1.3",//路由依赖    "psr/container": ">=1.0"  },

关于"nikic/fast-route"这个包的主人,大家可以看下面的文章,此人精通编译器,精通C/PHP/RUST等技术,一个德国人,这个包在各种框架用的很多像hyperf框架,easyswoole等框架。

php zend内核引擎开发者现状

Workerman的依赖

图片

"require": {        "php": ">=8.1",        "ext-json": "*"    },

核心依赖当然是PHP啦。

workerman框架的东西要学以下内容【前置知识】即可消化理解。

图片

https://edu.51cto.com/lecturer/14934648.html

掌握这2门内容对于驾驭和运用webman/workerman等将具有重大的技术认知和技术运用能力。

swoole的前置知识要具备哪些呢?

图片


"Swoole 项目最初的想法是来自于之前所做的一个企业软件项目。当时大概是 2010 年底,公司产品有一个需求是用户可以任意生成一个 email 地址,然后其他用户可以向这个 email 发邮件,后台能实时将邮件内容解析成数据,并主动通知用户。当时项目使用 PHP 开发的,在实现这个需求时遇到了难题,PHP 只能依赖其他的 SMTP 服务器,通过 pop3 协议定时查收新邮件来完成,这样就不是实时的。如果要实现的实时系统必须自己写一个 TCP Socket Server 实现 SMTP 协议接收数据。当时 PHP 在这个领域几乎是空白,没有一套成熟的网络通信框架。为了实现需求,我从 socket 学起到 TCP/IP、IO 复用、libevent、多进程【学习PHP多进程物物联网2门即可掌握】,最后终于实现了这套程序。做完这个项目后我就想把这套程序开源出来,希望能帮助其他 PHPer 解决在这个领域的难题。如果能有这样一个框架,那么 PHP 就能从单纯地做一个 Web 网站延伸到更大的空间。"

其实SWOOLE老文档和新文档都有提到,很多PHPER用swoole之所以觉得难于掌握,主要还是缺乏 前置知识导致的。

建议就是学习

图片

图片

对SWOOLE以及相关生态框架如hyperf,easyswoole具有极大帮助。

当然要了解更多可以学习以下内容

新课程c++开发PHP扩展实战

关于技术是否过时以及换编程语言问题

https://www.bilibili.com/video/BV15b421i7xv/?spm_id_from=333.999.0.0

https://www.bilibili.com/video/BV1Dj411d7GQ/?spm_id_from=333.999.0.0

这2个白嫖视频即可解答你的疑问,swoole/workerman/webman/go/java/python/nodejs/rust/c++/...等语言都是使用同样的SOCKET API来调用TCP/UDP,并且基于此实现了各种应用协议,此SOCKET API是操作系统内置的函数,功能和名字已经几十年不变,这不就应了荀子讲的:“千举万变,其道一也”或是老子讲的:“道生一,一生二,二生三,三生万物”的话了嘛。

也就是说大家掌握学习了[LINUX 下PHP多进程和物联网课程的知识是可以平移技术经验或是技术认知去看JAVA.GO.PYTHON.RUST.等各种语言上的,不存在过时或是无用的问题]

学完以后的效果

可以自已手撸出workerman/webman/swoole核心,通过实践深化完善对此类网络框架/库应用的理解和驾驭能力,是前置必备基础铺垫知识。同时对于其它编程语言的生态也能触类旁通,因为它们都是使用同样的SOCKET API。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/734677.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu下FastDDS的源码编译和简单测试

FastDDS是eprosima公司开发的DDS(Data Distribution Service)库,使用的语言是C,自称是"The Most Complete Open Source DDS Middleware",其官网是https://eprosima.com/,FastDDS源码在https://gi…

【面试干货】HashSet 和 TreeSet 的区别

【面试干货】HashSet 和 TreeSet 的区别 1、实现方式HashSetTreeSet 2、性能添加、删除和查找操作的时间复杂度HashSetTreeSet 3、元素唯一性4、迭代顺序HashSetTreeSet 5、使用场景HashSetTreeSet 6、示例代码 💖The Begin💖点点关注,收藏不…

Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案

初始化数据 */ private void initData(Bundle savedInstanceState) { if (savedInstanceState ! null) mDatas savedInstanceState.getStringArrayList(“mDatas”); if (mDatas null) { mLoadingDialog new LoadingDialog(); mLoadingDialog.show(getFragmentMana…

AI网络爬虫:搜狗图片的时间戳反爬虫应对策略

如何批量爬取下载搜狗图片搜索结果页面的图片?以孙允珠这个关键词的搜索结果为例: https://pic.sogou.com/pics?query%E5%AD%99%E5%85%81%E7%8F%A0&mode2 翻页规律如下: https://pic.sogou.com/napi/pc/searchList?mode2&start38…

Python: HexBinDecOct

因为: f0b1001110# 十进制 int()a0*2**01*2**11*2**21*2**30*2**40*2**51*2**6print(a)# 八进制 oct()print(78/8,78%8)# 110 001 001 8 116print(1*2**00*2**10*2**2,1*2**00*2**10*2**2,0*2**01*2**11*2**2)#十六进制 hex()#0 100 1110 16 4Eprint(sixteenFoo(0*…

2024-06-23 编译原理实验5——目标代码生成

文章目录 一、实验要求二、实验设计三、实验结果四、附完整代码 补录与分享本科实验,以示纪念。 一、实验要求 在词法分析、语法分析、语义分析和中间代码生成程序的基础上,将C−−源代码翻译为MIPS32指令序列(可以包含伪指令)&…

Windows程序设计课程作业-3(文件并发下载)

目录 目录 1.作业内容 2.作业要求 3.主要思路 1)窗体和组件初始化 2)下载管理器实例化 3)按钮点击事件处理 4)窗体加载事件处理 5)下载消息处理 4.主要难点 1)多线程管理: 2&#xff09…

理解傅里叶变换不同的数学表达形式

文章目录 前言一、三角函数分解形式推导:1.正交性:2.系数求解:1.A02.an,bn 二、指数形式1.推导与三角形式的对应关系: 2.信号与系统中的概念1.|Cn|是第n次谐波的幅度2.φn是第n次谐波的相位3.谐波分量 文章来源 前言 …

OPENCV中0x00007FFE5F35F39C发生异常

原因:读取图片时已经为灰度图像,又进行了一次灰度处理cvtColor 解决方法:如上图所示,将cv::imread的第二个参数改为cv::IMREAD_COLOR;或者保留cv::IMREAD_GRAYSCALE,删去后面的cv::cvtColor

Flutter开发环境搭建和调试

[你的Flutter文件夹路径]\flutter\bin 这样我们的Flutter SDK的环境变量就配置完毕了。接下来在命令提示符窗口中输入命令: flutter doctor 它可以帮助我们检查Flutter环境变量是否设置成功,Android SDK是否下载以及配置好环境变量等等。如果有相关的…

centos7系统上安装MySQL8.4图文教程

本章教程,主要记录如何在CentOS7系统上安装MySQL8.4的详细步骤。 一、查看当前系统版本 cat /etc/centos-release二、安装步骤 1、创建mysql目录 cd /usr/local && mkdir mysql && cd mysql2、安装rpm包 yum install https://repo.mysql.com//m…

[FreeRTOS 内部实现] 互斥访问与回环队列

文章目录 基础知识队列结构体创建队列 xQueueCreate 解析队列读数据 xQueueReceive 解析队列写数据 xQueueGenericSend 解析互斥访问与回环队列 内部实现框图 基础知识 [FreeRTOS 基础知识] 互斥访问与回环队列 概念 队列结构体 typedef struct QueueDefinition {int8_t *pcH…

Golang三色标记法

简介 在JVM中,GC采用可达性分析法来判断对象是否死亡;在python虚拟机中,GC采用引用计数法加循环检测器来判断对象是否死亡,而在golang中,使用的是三色表记法来判断对象是否死亡。 什么是三色抽象 总所周知在GC时&am…

keepalived高可用,nginx+keepalived+apache架构的实现

目 录 一、概述: 二、实验架构图如图所示: 三、实验环境: 四、实现效果: 五、实验解析及步骤: 六、具体实现: 6.1 先关闭防火墙和核心防护:两条命令: 6.2 后端apache服务…

2024最新1小时零基础编写uniapp和小程序管理后台,基于uniadmin和vue3实现uniapp小程序的网页管理后台

一,创建uniAdmin项目 打开开发者工具Hbuilder,然后点击左上角的文件,点新建,点项目。如下图。 选择uniadmin,编写项目名,然后使用vue3 记得选用阿里云服务器,因为最便宜 点击创建,等待项目创…

53【场景作图】纵深感

1 想清楚什么是前 什么是后 如果背景虚化,就不要处理地很平面,如果很平面,就留一个清晰的边缘 2 重叠 遮挡 被遮挡的物体会更远

动态ARP

定义 动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。 动态ARP适用于拓扑结构复杂、通信实时性要求高的网络。 ARP地址解析过程 动态ARP通过广播ARP请求和单播ARP应答这两个过…

前端监控实现(node+vue)

前端监控 项目地址 git clone https://gitee.com/childe-jia/monitor–front-end.git 背景 思考一下,我们的项目代码在上线之后是不是就不用管了呢?并不是,作为前端开发工程师,我们是直接跟用户打交道的,一个应用的用…

合并有序链表

合并有序链表 图解代码如下 图解 虽然很复杂,但能够很好的理解怎么使用链表,以及对链表的指针类理解 代码如下 Node* merge_list_two_pointer(List& list1, List& list2) {Node* new_head1 list1.head;Node* new_head2 list2.head;Node* s…

华为---理解OSPF Route-ID(五)

9.5 理解OSPF Route-ID 9.5.1 原理概述 一些动态路由协议要求使用Router-ID作为路由器的身份标示,如果在启动这些路由协议时没有指定Router-ID,则默认使用路由器全局下的路由管理Router-ID。 Router-ID选举规则为,如果通过Router-ID命令配置了Router-…