又仔細研究了下 Octane 源碼和 Swoole 的文檔,關于前幾天 Laravel Octane 和 Swoole 協程的使用分析中的猜想,得到進一步驗證:
Swoole 的 HTTP Server 啟動后會創建一個 master 進程和一個 manager 進程;master 進程又會創建多個 reactor 線程,負責將請求轉發到 work,并從 work 接收結果發送給客戶端,相當于 nginx;manager 會創建多個 work 和 task 子進程,work 進程相當于 php-fpm,task 專門處理一些耗時任務,最后將結果交給 work;
而 LaravelOctane 的 concurrently 方法,其實是以 task 為基礎,也就解釋了為什么脫離 HTTP server 會無法使用。
Swoole