執行流程

進程啟動流程

執行 php start.php start 後執行流程如下:

  1. 載入 config/ 下的配置
  2. 設定 Worker 的相關配置如 pid_file stdout_file log_file max_package_size
  3. 創建 webman 進程,並監聽端口(預設 8787)
  4. 根據配置創建自訂進程
  5. webman 進程和自訂進程啟動後執行以下邏輯(以下都是執行在 onWorkerStart 裡):
    ① 讀取 config/autoload.php 裡設定的文件,如 app/functions.php
    ② 讀取 config/middleware.php (包括 config/plugin/*/*/middleware.php)裡設定的中間件
    ③ 執行 config/bootstrap.php (包括 config/plugin/*/*/bootstrap.php)裡設定類的 start 方法,用於初始化一些模組,比如 Laravel 資料庫初始化連接
    ④ 讀取 config/route.php (包括 config/plugin/*/*/route.php)裡定義的路由

處理請求流程

  1. 判斷請求 URL 是否對應 public 下的靜態文件,是的話返回文件(結束請求),不是的話進入 2
  2. 根據 URL 判斷是否命中某個路由,沒命中進入 3、命中進入 4
  3. 是否關閉了預設路由,是的話返回 404(結束請求),不是的話進入 4
  4. 找到請求對應控制器的中間件,按順序執行中間件前置操作(洋蔥模型請求階段),執行控制器業務邏輯,執行中間件後置操作(洋蔥模型響應階段),請求結束。(參考中間件洋蔥模型