# Swoft介绍
首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈框架,内置协程网络服务器及常用的协程客户端,常驻内存,不依赖传统的 PHP-FPM,全异步非阻塞 IO 实现,以类似于同步客户端的写法实现异步客户端的使用,没有复杂的异步回调,没有繁琐的 yield, 有类似 Go 语言的协程、灵活的注解、强大的全局依赖注入容器、完善的服务治理、灵活强大的 AOP、标准的 PSR 规范实现等等,可以用于构建高性能的Web系统、API、中间件、基础服务等等。
Swoft采用组件化管理,因此很容易扩展组件,如果官方提供的组件不能满足需求我们可以通过自己扩展来实现。另外Swoft很适用于微服务方面,内置RPC的支持,支持服务注册发现。内置了Consul服务发现的功能,仅需简单配置就可以实现微服务中的注册发现。
### 我们可以使用Swoft做什么?
* API接口
* 微服务
* 分布式应用
* Websocket服务器
* 任务处理
* 推送服务器
* 物联网服务器
* 多进程队列消费
在很长一段时间里面php一直被用于前端调用,很少人会用来写服务。自从Swoole出现之后使得php常驻内存成了可能,我们也可以在这里面使用上以前在php-fpm不太好使用的设计模式。例如:容器、注入、注解等。在非常驻内存框架里面如果我们使用容器当然也会有一定好处可以解决类的实例化和单例问题,但是有一个很大的问题,php在没有常驻内存的情况下,每一个请求进来都会不断的创建和销毁对象,会造成大量的资源浪费。
### 有冲突的
下面列出一些已知的和swoole有冲突的php扩展,请使用swoft时不要安装或禁用它们:
* xdebug
* xhprof
* blackfire
* zend
* trace
* uopz
### 推荐环境配置
可以查看 swoft 下 Dockerfile 文件
更多介绍看:[关于Swoft](https://www.swoft.org/docs/2.x/zh-CN/README.html)
- 第一章:基础知识
- 课程简介
- PHP-FPM过渡常驻内存
- 进程
- 实战:实现Master-Worker
- 线程
- 实战:CC攻击器
- 协程
- 实战:实现waitGroup功能
- 进程、线程、协程的区别
- 第二章:初识Swoft2.0
- Swoft介绍
- Swoft环境安装
- gcc升级
- 安装Swoft框架
- 目录结构介绍
- SwoftCli工具
- Swoft配置
- 第三章:Swoft2.0核心
- 上下文
- 常驻内存没有上下文隔离
- 实战:手写swoole框架上下文管理
- Bean容器
- 实战:根据容器原理实现容器
- 实战:通过容器实现依赖注入
- Bean容器定义与使用
- 配置文件定义Bean
- 容器类型
- 面向接口的容器
- 注解
- 实战:实现注解
- 自定义Swoft注解类
- 事件
- 连接池
- 实战:Swoole实现连接池
- 第四章:Http服务器
- Http Server生命周期
- Http Server配置
- 控制器
- 路由
- 请求对象Request
- 响应对象Response
- Http异常处理
- 中间件
- 实战:中间件实现JWT登陆授权
- 第五章:验证器
- 内置验证类型
- 验证器的使用
- 自定义验证器
- 第六章:数据库操作
- 连接数据库
- 实体模型
- 模型事件
- 查询器
- 事务处理
- 连接池配置
- 读写分离
- 多数据库切换
- Models分层结构
- 实战:实现用户CURD API
- 第七章:Redis
- 连接redis和使用
- Redis连接池
- Redis集群配置(单机版)
- Redis集群配置(多服务器)
- Redis连接集群
- Redis实战:实现延时任务
- 第八章:AOP编程
- AOP概念
- AOP实现原理
- 实战实现AOP:静态代理
- 实战实现AOP:动态代理
- 切面注解介绍
- PointExecution切面
- PointBean切面
- PointAnnotation切面
- 实战:使用AOP实现日志记录
- 第九章:任务处理
- 进程使用
- 进程池使用
- 实战:进程消费队列
- 实战:进程实现RabbitMQ延时队列
- 异步任务
- 协程任务
- 定时任务