実行フロー
プロセス起動フロー
php start.php start
を実行した後のフローは以下の通りです:
- config/ 以下の設定を読み込みます
pid_file
、stdout_file
、log_file
、max_package_size
などの Worker に関連する設定を行います- webman プロセスを作成し、ポートをリッスンします(デフォルトは8787)
- 設定に基づいてカスタムプロセスを作成します
- 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
を含む)で定義されたルートを読み込みます
リクエスト処理フロー
- リクエストの URL が public 以下の静的ファイルに対応するかを判断します。該当する場合はファイルを返します(リクエスト終了)、該当しない場合は 2 に進みます
- URL に基づいて、特定のルートにヒットするかを判断します。ヒットしない場合は 3 に進み、ヒットした場合は 4 に進みます
- デフォルトルートが無効になっているかを判断します。無効になっている場合は 404 を返します(リクエスト終了)、無効になっていない場合は 4 に進みます
- リクエストに対応するコントローラーのミドルウェアを見つけ、順番にミドルウェアの前処理を実行します(オニオンモデルのリクエストフェーズ)、コントローラーのビジネスロジックを実行し、ミドルウェアの後処理を実行します(オニオンモデルのレスポンスフェーズ)、リクエストが終了します。(参考:ミドルウェアのオニオンモデル)