実行フロー

プロセスの起動フロー

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.phpconfig/plugin/*/*/middleware.phpを含む)で設定されたミドルウェアをロードします
    config/bootstrap.phpconfig/plugin/*/*/bootstrap.phpを含む)で設定されたクラスの start メソッドを実行します。これは、Laravel データベースの初期化接続など、いくつかのモジュールを初期化するために使用されます
    config/route.phpconfig/plugin/*/*/route.phpを含む)で定義されたルートをロードします

リクエスト処理のフロー

  1. リクエストのURLが public/ ディレクトリ内の静的ファイルに対応しているかどうかを判断し、対応している場合はファイルを返します(リクエストを終了します)。対応していない場合は、2 に進みます
  2. URL に応じて特定のルートにマッチしているかどうかを判断し、マッチしていない場合は、3 に進み、マッチした場合は、4 に進みます
  3. デフォルトのルートが無効になっているかを判断し、無効の場合は 404 を返します(リクエストを終了します)。有効な場合は、4 に進みます
  4. リクエストに対応するコントローラのミドルウェアを見つけ、順番にミドルウェアの前処理を実行します(オニオンモデルのリクエスト段階)、コントローラのビジネスロジックを実行し、ミドルウェアの後処理を実行します(オニオンモデルの応答段階)、リクエストを終了します。(ミドルウェアのオニオンモデルを参照)