php swool协程,swoole如何实现协程
Swoole在2.0開始內置協程(Coroutine)的能力,提供了具備協程能力IO接口(統一在命名空間Swoole\Coroutine\*)。
開啟協程時請在編譯時加入--enable-coroutine編譯選項。
協程可以理解為純用戶態的線程,其通過協作而不是搶占來進行切換。相對于進程或者線程,協程所有的操作都可以在用戶態完成,創建和切換的消耗更低。 (推薦學習:swoole視頻教程)
Swoole可以為每一個請求創建對應的協程,根據IO的狀態來合理的調度協程,這會帶來了以下優勢:
開發者可以無感知的用同步的代碼編寫方式達到異步IO的效果和性能,避免了傳統異步回調所帶來的離散的代碼邏輯和陷入多層回調中導致代碼無法維護。
同時由于swoole是在底層封裝了協程,所以對比傳統的php層協程框架,開發者不需要使用yield關鍵詞來標識一個協程IO操作,所以不再需要對yield的語義進行深入理解以及對每一級的調用都修改為yield,這極大的提高了開發效率。
協程API目前針對了TCP,UDP等主流協議client的封裝,包括:
UDP
TCP
HTTP
Mysql
Redis
可以滿足大部分開發者的需求。對于私有協議,開發者可以使用協程的TCP或者UDP接口去方便的封裝。
啟用Prerequisite:
PHP版本要求:>= 5.5,包括5.5、5.6、7.0、7.1
基于swoole_server或者swoole_http_server進行開發,目前只支持在onRequet, onReceive, onConnect等事件回調函數中使用協程。
swoole_server和swoole_http_server將為每一個請求創建對應的協程,開發者可以在onRequet、onReceive、onConnect 事件回調中使用協程客戶端。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的php swool协程,swoole如何实现协程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA返回指定字符串的长度,Java截
- 下一篇: 数据库oracle文件怎么打开,Orac