# 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延時隊列
- 異步任務
- 協程任務
- 定時任務