swoole框架-swoft初体验(swoole框架哪个好)
ccwgpt 2024-10-10 04:55 28 浏览 0 评论
框架介绍
没有swoole之前,php一直被"誉“为世界上最好的语言。swoole横空出世后,php就成了宇宙最好的语言了...
Swoft 是首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈框架,内置协程网络服务器及常用的协程客户端,常驻内存,不依赖传统的 PHP-FPM,全异步非阻塞 IO 实现,以类似于同步客户端的写法实现异步客户端的使用,没有复杂的异步回调,没有繁琐的 yield, 有类似 Go 语言的协程、灵活的注解、强大的全局依赖注入容器、完善的服务治理、灵活强大的 AOP、标准的 PSR 规范实现等等,可以用于构建高性能的Web系统、API、中间件、基础服务等等
- 内置高性能网络服务器(Http/Websocket/RPC/TCP)
- 灵活的组件功能
- 强大的注解功能
- 多样化的命令终端(控制台)
- 强大的面向切面编程(AOP)
- 容器管理,依赖注入(DI)
- 灵活的事件机制
- 基于PSR-7的HTTP消息的实现
- 基于PSR-14的事件管理
- 基于PSR-15的中间件
- 国际化(i18n)支持
- 简单有效的参数验证器
- 高性能连接池(Mysql/Redis/RPC),自动重新连接
- 数据库高度兼容Laravel的使用方式
- Redis高度兼容Laravel的使用方式
- 秒级定时任务
- Session 管理
- 进程池
- 高效的任务处理
- 灵活的异常处理
- 强大的日志系统
- 服务注册与发现
- 配置中心
- 服务限流
- 服务降级
- 服务熔断
- Apollo
- Consul
必须安装的环境是:
安装PHP并且版本至少 >7.0,推荐 7.1+安装php包管理器 composer安装redis的异步客户端 hiredis连接迭代器依赖 pcre 库安装php扩展swoole, 并且版本至少 >=2.1swoole开启协程和异步redis
注意事项:
禁止使用$_GET、$_POST、$GLOBALS、$_SERVER、$_FILES、$_COOKIE、$_SESSION、$_REQUEST、$_ENV等超全局变量 谨慎使用global、static关键字 不要在代码非协程环境中执行sleep以及其他睡眠函数,这样会导致整个进程阻塞. exit/die 是危险的,会导致 worker 进程退出 不要在业务代码中使用 swoole 不支持的 hook , 例如 MongoDB`,pgsql client`, 如果需要使用这些扩展需要单独开用户进程执行 无法 hook 的 io 都会同步阻塞进程, 导致协程无法切换, 直接的影响就是服务器大规模超时. 不建议使用 curl 扩展 类似的GuzzleHttp, 推荐使用 swoft 封装的网络请求包 Swoole 短名开启 ,在 php.ini 中配置swoole.use_shortname = 'on'
通过 Composer 安装
composer create-project swoft/swoft Swoft-Demo
完整结构
├── app/ ----- 应用代码目录
│ ├── Annotation/ ----- 定义注解相关
│ ├── Aspect/ ----- AOP 切面
│ ├── Common/ ----- 一些具有独立功能的 class bean
│ ├── Console/ ----- 命令行代码目录
│ ├── Exception/ ----- 定义异常类目录
│ │ └── Handler/ ----- 定义异常处理类目录
│ ├── Http/ ----- HTTP 服务代码目录
│ │ ├── Controller/
│ │ └── Middleware/
│ ├── Helper/ ----- 助手函数
│ ├── Listener/ ----- 事件监听器目录
│ ├── Model/ ----- 模型、逻辑等代码目录(这些层并不限定,根据需要使用)
│ │ ├── Dao/
│ │ ├── Data/
│ │ ├── Logic/
│ │ └── Entity/
│ ├── Rpc/ ----- RPC 服务代码目录
│ │ └── Service/
│ │ └── Middleware/
│ ├── WebSocket/ ----- WebSocket 服务代码目录
│ │ ├── Chat/
│ │ ├── Middleware/
│ │ └── ChatModule.php
│ ├── Tcp/ ----- TCP 服务代码目录
│ │ └── Controller/ ----- TCP 服务处理控制器目录
│ ├── Application.php ----- 应用类文件继承自swoft核心
│ ├── AutoLoader.php ----- 项目扫描等信息(应用本身也算是一个组件)
│ └── bean.php
├── bin/
│ ├── bootstrap.php
│ └── swoft ----- Swoft 入口文件
├── config/ ----- 应用配置目录
│ ├── base.php ----- 基础配置
│ └── db.php ----- 数据库配置
├── public/ ----- 公共目录
├── resource/ ----- 应用资源目录
│ ├── language/ ----- 语言资源目录
│ └── view/ ----- 视图资源目录
├── runtime/ ----- 临时文件目录(日志、上传文件、文件缓存等)
├── test/ ----- 单元测试目录
│ └── bootstrap.php
├── composer.json
├── phar.build.inc
└── phpunit.xml.dist
# 启动 HTTP 服务
$ php ./bin/swoft http:start
# 以守护进程模式启动
$ php ./bin/swoft http:start -d
# 重启 HTTP 服务
$ php ./bin/swoft http:restart
# 重新加载 HTTP 服务
$ php ./bin/swoft http:reload
# 停止 HTTP 服务
$ php ./bin/swoft http:stop
相关推荐
- 后端开发必看!Spring Boot3 如何轻松整合 MyBatis 管理 Mapper 接口?
-
你是否曾在使用SpringBoot3进行后端开发时,面对MyBatis管理Mapper接口一头雾水?项目工期紧张,却因为整合问题迟迟无法推进数据层开发,相信不少互联网大厂的后端开发人员都...
- 每天一个 Python 库:Django全能Web框架,一站式后台开发
-
为什么选择Django?Django=高效+全能+开箱即用内置功能说明ORM数据库操作更高效Admin管理后台1分钟搭好Auth登录认证/权限管理自动搞定路由、表单、静态资源通通内置...
- 作为后端开发,你知道MyBatis有哪些隐藏的 “宝藏” 扩展点吗?
-
在互联网大厂后端开发领域,MyBatis作为一款主流的持久层框架,凭借其灵活的配置与强大的数据处理能力,广泛应用于各类项目之中。然而,随着业务场景日趋复杂、系统规模不断扩张,开发过程中常面临SQL...
- 后端必看!Spring Boot3 跨域难题的五种破局之道
-
你在SpringBoot3开发中遇到过跨域问题吗?相信不少后端开发小伙伴都有过这样的经历:精心编写的接口,在前端调用时却突然报错,页面控制台跳出一堆关于跨域的错误提示,让人抓耳挠腮。别着急,今天...
- 这些 Python 后端技术竟成互联网大厂‘敲门砖’,你掌握了几个?
-
你是不是经常在技术群里刷到同行的“凡尔赛”发言?“刚用XX技术搞定大厂项目,offer直接到手”;又或者满心期待点开大厂招聘JD,却被Python后端那密密麻麻的技术要求,看得头皮发...
- 后端开发必读,一文带你了解如何配置MyBatis?
-
作为互联网大厂的后端开发人员,MyBatis想必是大家在项目开发中频繁使用的得力工具。不过,在实际操作中,你是否常常遭遇这些棘手状况:明明严格依照教程完成了MyBatis的配置,可项目启动时却无...
- 作为干电气的,低压断路器你真的了解吗?
-
低压断路器按结构型式分为万能式和塑料外壳式两类,本文主要介绍塑料式外壳小型断路器,小型断路器生厂厂家有很多,常见的为DZ型为中法合资的梅兰日兰,其余还有ABB公司的E系列F系列S系列,西门子的3...
- 高低压成套电气设备(五)(高低压成套设备技术的标准)
-
KYN28-12型户内金属铠装抽出式开关柜概述:KYN28-12(GZS1-12)型户内金属铠装抽出式开关柜系3~10KV三相交流50Hz单母线及单母线分段系统的成套配电装置。主要用于发电厂、中小型发...
- 深入解析:进线柜、出线柜等六种配电柜的组成和作用
-
配电柜家族深度解析:进线、出线、计量及其他从高压变电站到千家万户,电力如何安全可靠地输送?答案在于配电系统,而配电柜正是这个系统的核心组成部分,是电力系统心脏的守护者。本文将深入剖析六种常见配电柜——...
- 自主开发"开关机械特性测试数据智能分析工具"提升检修质量
-
5月9日,南网超高压公司天生桥局依托"大瓦特"智能平台天生桥局检修人员通过自主创新,成功开发出"开关机械特性测试数据智能分析工具",该成果标志着天生桥局在业技融合与数字化转型方面取得了重要突破。该分析...
- 烧焦后的电闸箱终于改完了,最终选择了安全实用的方案。
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:端木先生R几个月前,我家电闸箱零线排烧焦,当时真的有点小慌。后来找朋友研究半天,站内很多朋友给了不少宝贵意见,终于上周改造完了。十分感谢大伙...
- 什么是断路器的“壳架电流”?和“额定电流”有什么关系?
-
【我是头条创作者“振生的电气知识角”,欢迎在评论区留言,▲左上角点击+“关注”】小伙伴儿们,你们是不是会有疑问:断路器的“壳架电流”和脱扣器的“整定电流”什么关系?二者是否是一回事儿呢?接下来,我们...
- 断路器各种电流之间的关系是什么?作为电气人都需要掌握的知识!
-
提起断路器,想必大部分电气人员都不陌生了,但是如果说到断路器各种电流之间的关系,可能不少电气人员都是云里有雾摸不着头脑,甚至还有一些电气人员是一问三不知的。我们都知道断路器是指能够关合、承载和开断正常...
- ABB高压授权柜UniSafe 提供尽可能多的供配电回路
-
ABB高压开关柜UniSafe以其环保、紧凑的设计而著称,不仅结构紧凑、空间利用率高,还能在有限的占地面积内提供尽可能多的供配电回路,大大节省了资源和土建费用。内部结构部件采用优质材料,如敷铝锌钢板或...
- 如何选择空气开关,详细介绍分析(如何选择空气开关,详细介绍分析方法)
-
空气开关C型与D型的选择需根据负载特性、电流冲击需求和应用场景综合判断,以下是具体分析:一、核心区别空气开关结构简图施耐德空开西门子空开ABB空开ABB塑料外壳断路器施耐德塑料外壳断路器施耐德塑料外壳...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 后端开发必看!Spring Boot3 如何轻松整合 MyBatis 管理 Mapper 接口?
- 每天一个 Python 库:Django全能Web框架,一站式后台开发
- 作为后端开发,你知道MyBatis有哪些隐藏的 “宝藏” 扩展点吗?
- 后端必看!Spring Boot3 跨域难题的五种破局之道
- 这些 Python 后端技术竟成互联网大厂‘敲门砖’,你掌握了几个?
- 后端开发必读,一文带你了解如何配置MyBatis?
- 作为干电气的,低压断路器你真的了解吗?
- 高低压成套电气设备(五)(高低压成套设备技术的标准)
- 深入解析:进线柜、出线柜等六种配电柜的组成和作用
- 自主开发"开关机械特性测试数据智能分析工具"提升检修质量
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)