如何用好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。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud微服务框架的原理及应用详解(五)

本系列文章简介: 随着云计算、大数据和物联网等技术的飞速发展,企业应用系统的规模和复杂度不断增加,传统的单体架构已经难以满足快速迭代、高并发、高可用性等现代业务需求。在这样的背景下,微服务架构应运而生,成为了…

分布式架构的优势与实现

目录 前言1. 什么是分布式架构1.1 分布式架构的定义1.2 分布式架构的基本原理 2. 分布式架构的优势2.1 可扩展性2.2 容错性和高可用性2.3 性能优化2.4 灵活性和可维护性 3. 分布式架构的实现方法3.1 服务拆分3.1.1 功能拆分3.1.2 垂直拆分3.1.3 水平拆分 3.2 数据分布与存储3.2…

力扣907.子数组的最小值之和

力扣907.子数组的最小值之和 考虑每个数对答案的贡献 对于每个元素 找到左边界(严格小于) 右边界(小于等于) 这样出现重复元素也不会重复计算答案对于答案贡献为 arr[i] * (i - l) * (r - i) class Solution {const int MOD 1e97;public:int sumSubarrayMins(vector<int…

java—Mybatis缓存

缓存的作用 缓存(cache&#xff09;的作用是为了减轻数据库的压力&#xff0c;提高查询性能。 为什么使用缓存 mysql数据库保存的数据均在硬盘中&#xff0c;CPU是不会直接和硬盘进行交互的&#xff0c;因为硬盘的数据传输率很低&#xff0c;而CPU的数据传输率很高, CPU和内存直…

VBA技术资料MF165:关闭当前打开的所有工作簿

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

springBoot不同module之间互相依赖

在 Spring Boot 多模块项目中&#xff0c;不同模块之间的依赖通常是通过 Maven 或 Gradle 来管理的。以下是一个示例结构和如何设置这些依赖的示例。 项目结构 假设我们有一个多模块的 Spring Boot 项目&#xff0c;结构如下&#xff1a; my-springboot-project │ ├── p…

「前端+鸿蒙」鸿蒙应用开发-UI组件

在鸿蒙应用开发中,UI组件是构建用户界面的基本元素。以下是一些常用UI组件的介绍,包括它们的使用方式和示例代码。 1. 文本(Text) 文本组件用于在界面上显示文本内容。 import {Component, render, Text } from @ohos/arkui;class TextComponent extends Component {rend…

Spring (75)Spring Boot的部署最佳实践

在部署Spring Boot应用程序时&#xff0c;最佳实践通常涉及应用程序的打包、配置管理、健康检查、日志记录、安全、环境隔离和监控。以下是结合一些最佳实践的详细步骤和解释。 1. 打包和构建 Spring Boot应用程序通常打包为可执行的JAR文件&#xff0c;它包括应用程序和所有…

四年Android,终于咸鱼翻身!8K到25K全靠这份高级面试题+解析!

1、哪些情况下的对象会被垃圾回收机制处理掉&#xff1f; 2、讲一下常见编码方式&#xff1f; 3、utf-8 编码中的中文占几个字节&#xff1b;int 型几个字节&#xff1f; 4、静态代理和动态代理的区别&#xff0c;什么场景使用&#xff1f; 5、Java 的异常体系 6、谈谈你对解析…

写一个坏越的个人天地(一)

好久没写什么大点的项目了,今天想着写一个个人博客好了。I did it! 做个人天地。肯定得有个主题色吧。整个下拉界面,先准备三个色系吧 <el-header class="title"><el-dropdown @command="handleCommand"><span class="el-dropdown-…

若依4.7.8版本计划任务rce复现

0x00 背景 最近项目中发现很多单位都使用了若依二开的系统&#xff0c;而最近若依有个后台计划任务rce的漏洞&#xff0c;比较新&#xff0c;我还没复现过&#xff0c;于是本地搭建一个若依环境复现一下这个漏洞。 这个漏洞在4.7.8版本及之前都存在&#xff0c;现在最新版的若…

管理端开发如何快速理解并实现权限控制总结

管理端开发如何快速理解并实现权限控制总结 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在管理端开发中&#xff0c;权限控制是至关重要的一环。通过权限控…

647. 回文子串(leetcode)

647. 回文子串&#xff08;leetcode&#xff09; 题目描述 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中回文子串的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 示例1 输入&#xff1a;s “abc” 输出…

Golang | Leetcode Golang题解之第179题最大数

题目&#xff1a; 题解&#xff1a; func largestNumber(nums []int) string {sort.Slice(nums, func(i, j int) bool {x, y : nums[i], nums[j]sx, sy : 10, 10for sx < x {sx * 10}for sy < y {sy * 10}return sy*xy > sx*yx})if nums[0] 0 {return "0"…

Android 天气APP(八)城市切换 之 自定义弹窗与使用

然后在模块的utils包中新建一个LiWindow类 代码如下&#xff1a; package com.llw.mvplibrary.utils; import android.app.Activity; import android.content.Context; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; im…

element-ui里message抖动问题

由于element默认屏蔽滚动条&#xff0c;导致取消时弹message时 侧边滚动栏突然回来后引起抖动问题 是由于打开弹窗时出现遮罩层dialog对话框 时引起了元素内容超出自身尺寸 对应的overflow样式内容为hidden&#xff0c;且新建了一个class类内容为增加17 内右边距&#xff0c;当…

某md5魔改-js还原

我们先把js 扣下来看一下 整体扣一下 ,运行后发现结果一致。 到这里就结束了吗,不不,这次我们要看到它里面具体的变动 <-_-> 先看一下md5的初步加密流程 void MD5Init(MD5_CTX *context) {context->count[0] = 0;context->count[1] = 0;context->state[0]…

注解详解系列 - @Order:控制Bean加载顺序

注解简介 在今天的注解详解系列中&#xff0c;我们将探讨Order注解。Order是Spring框架中的一个重要注解&#xff0c;用于控制Spring容器中Bean的加载顺序。通过Order注解&#xff0c;可以指定多个Bean的优先级&#xff0c;从而决定它们的执行或加载顺序。 注解定义 Order注解…

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

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

目标检测YOLO实战应用案例100讲-【目标检测】YOLOV9

目录 前言 算法原理 Methodology—方法 可编程梯度信息PGI 辅助可逆分支 多级辅助信息 广义 ELAN 实验效果 实施细节 与最先进实时目标检测器的比较 消融实验 表6展示了从基线 YOLOv7 到 YOLOv9 逐渐增加组件的结果。我们提出的 GELAN 和 PGI 为我们带来了较大优势…