mirror of
https://gitee.com/hyperf/hyperf.git
synced 2024-11-30 10:47:44 +08:00
1.5 KiB
1.5 KiB
生命週期
框架生命週期
Hyperf 是運行於 Swoole 之上的,想要理解透徹 Hyperf 的生命週期,那麼理解 Swoole 的生命週期也至關重要。
Hyperf 的命令管理默認由 symfony/console 提供支持*(如果您希望更換該組件您也可以通過改變 skeleton 的入口文件更換成您希望使用的組件)*,在執行 php bin/hyperf.php start
後,將由 Hyperf\Server\Command\StartServer
命令類接管,並根據配置文件 config/autoload/server.php
內定義的 Server
逐個啟動。
關於依賴注入容器的初始化工作,我們並沒有由組件來實現,因為一旦交由組件來實現,這個耦合就會非常的明顯,所以在默認的情況下,是由入口文件來加載 config/container.php
來實現的。
請求與協程生命週期
Swoole 在處理每個連接時,會默認創建一個協程去處理,主要體現在 onRequest
、onReceive
、onConnect
事件,所以可以理解為每個請求都是一個協程,由於創建協程也是個常規操作,所以一個請求協程裏面可能會包含很多個協程,同一個進程內協程之間是內存共享的,但調度順序是非順序的,且協程間本質上是相互獨立的沒有父子關係,所以對每個協程的狀態處理都需要通過 協程上下文 來管理。