天天看點

easyswoole和mixphp_韓天峰 - Swoole4-全新的PHP程式設計模式

1.Swoole 4.0 ‫ܐ‬ᑕ ‫ق‬ෛጱPHPᖫᑕཛྷୗ @hantianfeng Rango-ᶥॠશ

2.‫ړ‬Ձٖ਻ 一. Go + Chan 全新協程程式設計模式 二. Swoole 4.0 新版本協程實作原理 三. Swoft 協程架構的使用

3.01 Swoole 4.0

4.•  串行程式設計 •  fun1 要等待 fun2 執行完畢 •  總耗時 2 秒 •  如何實作并發程式設計?

5.建立 回收 通信方式 資源消耗 并發能力 程式設計難度 多程序 fork wait IPC 程序間通信 程序切換開銷 數百 困難 多線程 pthread_create pthread_join 資料同步/鎖 程序切換開銷 數千 非常困難

6.Coroutine

7.建立 回收 通信方式 資源消耗 并發能力 程式設計難度 多程序 fork wait IPC 程序間通信 程序切換開銷 數百 困難 多線程 pthread_create pthread_join 資料同步/鎖 程序切換開銷 數千 非常困難 協程 go array/chan 非常低 50萬 容易

8.•  并發程式設計 •  fun1 和 fun2 并發執行 •  總耗時 1 秒

9.

10.建立 Socket 綁定端口并監聽 Accept 連接配接 建立新的協程處理 接收資料并響應 協程退出

11.‫ܐ‬ᑕ 1.  使用者态線程,遇到 IO 主動讓出 2.  PHP 代碼依然是串行執行的,無需加鎖 3.  開銷極低,僅占用記憶體,不存在程序/線程切換開銷 4.  并發量大,單個程序可開啟 50W 個協程 5.  随時随地,隻要你想并發,就調用 go 建立新協程

12.

13.SplQueue new SplQueue $queue->push $queue->pop push 永遠可用,持續寫記憶體 pop 無可用資料時傳回 false Chan new chan() 緩存/無緩存 $chan->push $chan->pop push 容量不足是挂起協程 pop 無可用資料時挂起協程

14.᭗᭲ 1.  資料流轉 2.  協程管理 3.  并發依賴管理 4.  多個 chan 可以使用chan::select進行讀寫判斷

15.Http 請求 Http 請求 發送響應

16.協程元件 Co\Socket 說明 Socket 的封裝 Co\Client TCP/UDP/UnixSocket用戶端 Co\Http\Client Http和WebSocket用戶端 Co\Http2\Client Http2用戶端 Co\MySQL MySQL用戶端 Co\Redis Redis用戶端Co::sleep睡眠Co::readFile/Writefile讀寫檔案 同步阻塞 API Sockets/Stream Sockets/Stream CURL/file_get_contents CURL/GRPC mysqli/PDO redis usleep/sleep fread/fwrite

17.02 協程實作

18.2.0 setjmp/longjmp 3.0 EG(vm_interrupt) 4.0 libco

19.Swoole 2.0 ޾ 3.0 ጱੴᴴ௔ 1.  不支援 call_user_func, array_map, 魔術方法,反射方法 2.  不支援擴充 zend_call_function 3.  很多第三方庫,使用了複雜的設計模式,不可控

20.Swoole 4.0 1.  100% 支援所有 PHP 文法,包括魔術方法、反射、call_func 2.  完整的 C 棧 (基于微信開源的 libco)+ PHP 棧 3.  前置 SysCall Hook,可将 PHP 的同步用戶端,如 mysqli/ pdo/file_get_contents/sleep/fread 無縫切換為協程模式 (Swoole 5.0)

21.

22.swoole_coroutine.cc •  co_create •  co_yield •  co_resume •  co_close

23.03 Swoft 架構

24.Swoft 1.  完全基于 Swoole 的純協程架構 2.  Composer 元件化,完全遵循 PSR 規範 3.  依賴注入,容器,元件,連接配接池,AOP(面向切面程式設計) 4.  支援 Web 開發、微服務治理 5.  Docker 支援

25.

26.Swoft 支援的伺服器 1.  swoft-http-srever :高并發純協程 Web 應用程式 2.  swoft-websocket-server :長連接配接通信伺服器 3.  swoft-rpc-server :微服務治理

27.

28.

29.控制器與 URL 映射 URL 路由 GET 參數映射

30.Swoft 微服務 1.  服務熔斷 2.  服務降級 3.  服務注冊與發現(基于 consul) 4.  負載均衡

31.Swoft EasySwoole Swoole 框 架 PHP-MSF SwooleDistributed

32.Blink ZPHP Swoole 架構 GroupCo FastD

33.MixPHP LaravelS Swoole 架構 Yii-Swoole Yaf-Swoole

34.THANK YOU PHPCON ਥᗑғwww.phpconchina.com ‫ق‬᮱ PPT ӥ᫹ғhttps://github.com/ThinkDevelopers/PHPConChina- ๗இٚᥠ- Q & A ਥොQQᗭғ34449228̵135615537 ਥො‫ل‬ռ‫ݩ‬ғThinkInLAMP