Swoole學習-Swoole入門指南


初識Swoole
Swoole官網:https://www.swoole.com/

Swoole官方文檔:https://wiki.swoole.com/       

預備相關知識素材推薦

入門書籍:《tcp/ip網絡編程(尹聖雨 韓)》。
深入書籍:《unix環境高級編程(中文第三版)》;《unix網絡編程卷1:套接字聯網》;《unix網絡編程卷2:進程間通信》。
版本
已更新至4.3.x。swoole2.0增加協程。swoole3.0以上版本要求php>=7.0。

開發輔助工具

Swoole 4.X速查表:https://toxmc.github.io/swoole-cs.github.io/

ide提示工具:https://github.com/swoole/ide-helper

這2個工具挺實用的,截圖如下:

 

 

 

 

IDE helper包下載后放進任意目錄,然后IDE include path即可。

 

 

 

Swoole入門指引


swoole底層是C寫的。swoole系列函數可以理解為swoole提供給php的api,php通過swoole系列函數調用swoole的api,來啟動swoole服務、注冊回調函數等,swoole的事件驅動來執行對應的回調函數。這完全區別於普通的php擴展只提供庫函數,而對於swoole,php只是傳遞的作用,真正的程序控制權是swoole。


學習swoole的基礎知識

linux是必須的。學習swoole需要對進程、線程、異步同步、IO復用、reactor模型、進程間通訊、信號等概念有所了解,可學習《tcp/ip網絡編程》這本書做簡單的理解,通過php對應的擴展,借鑒workman源碼來理解機制,這樣會對swoole的學習有很大幫助。

swoole並沒有用libevent,所以不需要安裝libevent。swoole並不依賴php的stream/sockets/pcntl/posix/sysvmsg等擴展

libevent是一個事件驅動庫,php有對應的event擴展,可幫助理解swoole的io復用和事件機制。
stream/sockets是網絡通訊的工具、可幫助理解swoole的tcp/udp/http。
pcntl/posix是進程控制擴展,可幫助理解swoole中的多進程、進程間通訊。
sysvmsg消息隊列,可幫助理解swoole中的task模塊。

 

Swoole提供的功能庫
swoole提供了哪些功能給我們用,以為我們用到哪些服務時,可以用swoole來幫我們實現。

http服務 ,編寫一個簡單的web server。
TCP/UDP服務 ,編寫一個消息接受處理系統。
異步,可以異步的處理請求。
並發 ,可以並發的處理同一個業務邏輯。
socket,socket通訊處理技術。
毫秒級別定時器,可以在php中使用定時器了。
協程,相比線程更穩定和好用。
     如果你的業務中,有用到以上等特性,你又在用使用php,那么完全可以用swoole來完成了,再具體點的場景如下:

    1、互聯網;    2、移動通信;   3、企業軟件;   4、雲計算;   5、網絡游戲;   6、物聯網(IOT);   7、車聯網;   8、智能家居等領域

 

Swoole的框架
       Swoft 首個基於 Swoole 原生協程的新時代 PHP 高性能協程全棧框架,內置協程網絡服務器及常用的協程客戶端,常駐內存,不依賴傳統的 PHP-FPM,全異步非阻塞 IO 實現,以類似於同步客戶端的寫法實現異步客戶端的使用,沒有復雜的異步回調,沒有繁瑣的 yield, 有類似 Go 語言的協程、靈活的注解、強大的全局依賴注入容器、完善的服務治理、靈活強大的 AOP、標准的 PSR 規范實現等等,可以用於構建高性能的Web系統、API、中間件、基礎服務等等。

        EasySwoole EasySwoole 是一款基於Swoole Server 開發的常駐內存型PHP框架,專為API而生,擺脫傳統PHP運行模式在進程喚起和文件加載上帶來的性能損失。EasySwoole 高度封裝了Swoole Server 而依舊維持Swoole Server 原有特性,支持同時混合監聽HTTP、自定義TCP、UDP協議,讓開發者以最低的學習成本和精力編寫出多進程,可異步,高可用的應用服務。

       SwooleDistributed SwooleDistributed 老牌Swoole框架擁有最完善的開發工具以及最強大的功能,首創SDHelper開發者工具包和開發者調試命令集,可以進行單元測試,捕獲客戶端流量分析,可視化的進行遠程斷點聯調,還具備代碼覆蓋率檢測的功能(swoole與xdebug擴展不兼容,SDHelper無需xdebug擴展),並且內置組件極其豐富(類MQTT強悍的訂閱發布/Actor模型/內存高速緩存/事件派發/進程管理/定時任務/AMQP任務調度/后台監控/集群/微服務/RPC/異步連接池/自定義命令等等),開發者可以直接使用加快開發進度。幾乎所有的功能都支持集群化,單機切換到集群無需對代碼做任何的修改。如果業務開發比較復雜比如(游戲開發)那么SD框架將是你的不二之選。

swoole進程結構

 

 


Master主進程
manager管理進程
worker子進程
task任務進程
MainReactor主線程
reactor線程組


Swoole的進程/線程模型

 

 

 

Swoole程序的執行流程

 


原文鏈接:https://blog.csdn.net/yan_dk/java/article/details/89445254


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM