我們都知道Swoole 是一個 PHP 協程框架,為 PHP 提供協程、高性能網絡編程支持,并提供了多種通信協議的網絡服務器和客戶端模塊,可以方便快速地實現 TCP/UDP 服務、高性能 Web、WebSocket 服務、物聯網、實時通訊、游戲、微服務等,使 PHP 不再局限于傳統的 Web 領域。所以在php面試中,少不了關于swoole協程相關的內容。今天就給大家整理一些相關內容,希望對大家有所幫助。
Swoole 協程的原理
-
Swoole4 由于是單線程多進程的,同一時間同一個進程只會有一個協程在運行。
-
Swoole server 接收數據在 worker 進程觸發 onReceive 回調,產生一個協
程。Swoole 為每個請求創建對應協程。協程中也能創建子協程。
-
協程在底層實現上是單線程的,因此同一時間只有一個協程在工作,協程的執行是串行的。
-
因此多任務多協程執行時,一個協程正在運行時,其他協程會停止工作。當前協程執行阻塞 IO 操作時會掛起,底層調度器會進入事件循環。當有 IO 完成事件時,底層調度器恢復事件對應的協程的執行。。所以協程不存在 IO 耗時,非常適合高并發 IO 場景。
Swoole 的協程執行流程
-
協程沒有 IO 等待 正常執行 PHP 代碼,不會產生執行流程切換
-
協程遇到 IO 等待 立即將控制權切,待 IO 完成后,重新將執行流切回原來協程切出的點
-
協程并行協程依次執行,同上一個邏輯
-
協程嵌套執行流程由外向內逐層進入,直到發生 IO,然后切到外層協程,父協程不會等待子協程結束
以上就是“這幾個swoole協程知識點,讓你秒通面試(swoole協程使用場景)”的詳細內容,想要了解更多swoole相關內容歡迎持續關注編程學習網
掃碼二維碼 獲取免費視頻學習資料
- 本文固定鏈接: http://www.wangchenghua.com/post/9048/
- 轉載請注明:轉載必須在正文中標注并保留原文鏈接
- 掃碼: 掃上方二維碼獲取免費視頻資料