Swoole難上手?從EasySwoole開始
- 2019 年 11 月 7 日
- 筆記

前言
我一生的文章都會放在這裡,我的博客,我希望每一行代碼,每一段文字都能幫助你。https://github.com/CrazyCodes/Blog
大家好,我是CrazyCodes,我沒有消失,最近在準備考試,所以文章出的比較慢,請見諒
有些童鞋感覺對Swoole不從下手,也不知在什麼業務上使用它,看它這麼火卻學不會也是挺讓人捉急的一件事情。
Swoole:面向生產環境的 PHP 異步網絡通信引擎
啥是異步網絡通信?
異步通信

簡單點來說,就是一個人和一群人的關係,一個人去做十件事,需要一件一件去做,一群人去做10件事,可以分配每個人做每件事。我們用Swoole可以做什麼?
- 聊天室
- 並發的處理 (讀大文件)
- 異步MySQL
- 異步Redis
- 等等
當然不去做,只在看,很難理解為何選擇使用Swoole去做這些。從現在開始,我們暫時不關心上面的這些概念,啥話都不說,就是干
EasySwoole
EasySwoole ? 名副其實,作者為了讓開發者更便捷的使用Swoole 而封裝的開發框架,地址在下方
EasySwoole https://www.easyswoole.com/
使用EasySwoole你會發現有很多很難理解的概念及用法。沒關係,跟着我,慢慢來~
安裝
EasySwoole的環境要求 – 保證 PHP 版本大於等於 7.1 – 保證 Swoole 拓展版本大於等於 4.3.0 – 需要 pcntl 拓展的任意版本 – 使用 Linux / FreeBSD / MacOS 這三類操作系統 – 使用 Composer 作為依賴管理工具
如果你感覺以上要求太苛刻,你可以選擇使用Docker快速部署一套開發環境或者使用更簡單的 homestead
在使用EasySwoole之前我們要安裝Swoole,Swoole是PHP擴展,我們可以通過
pecl install swoole
快速安裝,或者使用源碼編譯的形式安裝
安裝完擴展後,接下來我們就使用萬能composer來安裝EasySwoole
composer require easyswoole/easyswoole=3.x php vendor/bin/easyswoole install
服務管理
EasySwoole(Swoole)與其他框架不同,他不擅長開發Web,請將目標定位在後端服務上。以下內容為引用官方文檔
php easyswoole start
Hello World
以下為官方文檔內容 https://www.easyswoole.com/Manual/3.x/Cn/_book/Introduction/install.html
在項目根目錄下創建如下的目錄結構,這個目錄是編寫業務邏輯的應用目錄,編輯 Index.php 文件,添加基礎控制器的代碼
project 項目部署目錄 ---------------------------------- ├─App 應用目錄 │ └─HttpController 應用的控制器目錄 │ └─Index.php 默認控制器文件 ----------------------------------
<?php namespace AppHttpController; use EasySwooleHttpAbstractInterfaceController; class Index extends Controller { function index() { // TODO: Implement index() method. $this->response()->write('hello world'); } }
然後編輯根目錄下的 composer.json 文件,註冊應用的命名空間
{ "autoload": { "psr-4": { "App\": "App/" } }, "require": { "easyswoole/easyswoole": "3.x-dev" } }
最後執行 composer dumpautoload
命令更新命名空間,框架已經可以自動加載 App 目錄下的文件了,此時框架已經安裝完畢,可以開始編寫業務邏輯
# 更新命名空間映射 composer dumpautoload # 啟動框架 php easyswoole start
啟動框架後,訪問 http://localhost:9501即可看到 Hello World 。
組件
EasySwoole提供了很多實用的組件包括 – 控制台組件 – 定時器 – 觸發器 – 日誌處理等等…
致謝
從下一章開始,我們逐步使用EasySwoole的各項功能並開發一個簡單的並發版爬蟲系統,感謝你看到這裡,希望本文可以幫到你,謝謝