執(zhí)行流程
進程啟動流程
執(zhí)行 php start.php start 后執(zhí)行流程如下:
- 載入config/下的配置
- 設(shè)置Worker的相關(guān)配置如
pid_file
stdout_file
log_file
max_package_size
等 - 創(chuàng)建webman進程,并監(jiān)聽端口(默認8787)
- 根據(jù)配置創(chuàng)建自定義進程
- webman進程和自定義進程啟動后執(zhí)行以下邏輯(以下都是執(zhí)行在onWorkerStart里):
① 加載config/autoload.php
里設(shè)置的文件,如app/functions.php
② 加載config/middleware.php
(包括config/plugin/*/*/middleware.php
)里設(shè)置的中間件
③ 執(zhí)行config/bootstrap.php
(包括config/plugin/*/*/bootstrap.php
)里設(shè)置類的start方法,用于初始化一些模塊,比如Laravel數(shù)據(jù)庫初始化連接
④ 載入config/route.php
(包括config/plugin/*/*/route.php
)里定義的路由
處理請求流程
- 判斷請求url是否對應public下的靜態(tài)文件,是的話返回文件(結(jié)束請求),不是的話進入2
- 根據(jù)url判斷是否命中某個路由,沒命中進入3、命中進入4
- 是否關(guān)閉了默認路由,是的話返回404(結(jié)束請求),不是的話進入4
- 找到請求對應控制器的中間件,按順序執(zhí)行中間件前置操作(洋蔥模型請求階段),執(zhí)行控制器業(yè)務邏輯,執(zhí)行中間件后置操作(洋蔥模型響應階段),請求結(jié)束。(參考中間件洋蔥模型)