機能

スタックが担っていたすべてを、1 つのプロセスで実現

実行モデル、HTTP 配信、共有状態、可観測性、セキュリティ — すべて組み込み済みで、デフォルトで有効、あるいは環境変数を 1 つ設定するだけです。nginx の設定も、サイドカーも、コンパイルが必要なプラグインもありません。

Run PHP

実行モデル

永続的なワーカー、協調的なファイバー、そして本物のバックグラウンドスレッド — リクエストのライフサイクルを自在に設計できます。

永続的な PHP プロセスが一度だけブートストラップし、数千のリクエストを処理します。スーパーグローバル、バッファ、ヘッダーはリクエスト間でソフトリセットされ、オートローダー、コンテナ、DB 接続は維持されます。

各ワーカーは PHP 8.4 の Fiber を通じて数百の並行リクエストを処理します — sleep や await はスレッドをブロックする代わりにファイバーを譲ります。

クロージャを専用のスレッドプールにディスパッチして結果を待機できます — 並列ファンアウト向けに all、race、any のコンビネーターを備えています。

レスポンスをクライアントに即座に送信し、その後もバックグラウンドで処理を続けられます — ジョブのキュー投入、ログの書き込み、キャッシュのウォームアップなど。

PHP 8 のアトリビュートで関数やメソッドの呼び出しをインターセプトできます — 呼び出し箇所に手を加えることなく、リトライ、キャッシュ、トレース、ガードを実現します。

PHP から直接、明示的なフラッシュ制御でリアルタイムの Server-Sent Events を送信できます — プロキシのバッファリングに悩まされることはありません。

Serve

HTTP と配信

これまで nginx が担っていた Web サーバー層 — ルーティング、静的ファイル、TLS、圧縮、保護 — を環境変数で設定できます。

従来のファイルマッピング、フレームワークのフロントコントローラー、SPA フォールバック — 変数 1 つで切り替えられ、ワーカーモードはそのいずれの上にも重ねられます。

メモリ内コンテンツキャッシュ、MIME タイプの自動検出、ETag および Last-Modified ヘッダー、大容量ファイルのストリーミングに対応します。

テキストレスポンスを標準で圧縮します — 品質は 0〜11 で調整でき、削減バイト数はメトリクスとして公開されます。

変数 2 つで TLS 終端を実現します — PEM 証明書と鍵を指定し、最小プロトコルバージョンは起動時に強制されます。

IP 単位の制限をウィンドウ設定付きで行えます。制限を超えたリクエストには 429 を返し、PHP のキューが満杯の場合は 529 でバックプレッシャーを通知します。

Slowloris 対策のヘッダー読み取りタイムアウト、リクエストタイムアウト、シャットダウン時のグレースフルなドレイン期間を備えています。

ステータスコードごとに独自の HTML を用意できます — 404.html や 503.html をディレクトリに置き、変数 1 つでそこを指すだけです。

SIGTERM は終了前に処理中の接続をドレインします — リクエストを取りこぼすことなくローリングデプロイを実現します。

Coordinate

共有状態

プロセス全体で使える並行プリミティブにより、Redis や APCu なしでワーカー同士が協調できます — プロセス内の操作にかかるのはマイクロ秒単位で、ネットワークのラウンドトリップは発生しません。

アトミックな int64 アキュムレーター — get、set、add、compareAndSet。

明示的なメモリオーダリング制御が可能な Int64。

ワンショットな遷移向けのアトミックなブール値。

Once

18

再入可能で安全なファクトリーを備えた、一度だけ実行されるコンテナ。

保存された値を保護するポイズニング対応のミューテックス。デッドロック検出機能付き。

ワーカー間で使える、境界付きでファイバー対応の MPMC キュー。

バッチアクセスに対応した、文字列キーの並行ストア。

スレッドごとのアフィニティを持つ、境界付きオブジェクトプール。

Observe

可観測性

メトリクス、ログ、トレース、プロファイルがサーバーに組み込まれています — エクスポーターも、サイドカーも、コード変更も不要です。

専用の内部ポートが、リクエスト、ワーカー、キュー、キャッシュ、非同期のメトリクスを公開します — Grafana ですぐに利用できます。

各行にメソッド、パス、ステータス、処理時間、リクエストID を含む JSON アクセスログを出力します — Loki や Elasticsearch がそのまま解析できます。

X-Request-ID を自動的に生成またはパススルーし、PHP から利用でき、すべてのログ行に付与されます。

W3C Trace Context、OpenTelemetry エクスポート、PDO・cURL・Redis の自動計装、さらに PHP 向けのトレーシング SDK を備えています。

リクエストごとのプロファイルを xhprof、speedscope、pprof、FlameGraph の各形式で取得できます — ヘッダー、Cookie、サンプリングでトリガーできます。

Liveness と Readiness のエンドポイント、さらにライブな設定スナップショットを提供します — Kubernetes のプローブが標準で動作します。

Protect

セキュリティ

妥当な保護がデフォルトで有効になっており、レガシーな PHP アプリの危うい部分に対応する拒否リストも備えています。

隠しファイルやディレクトリ — .env、.git/、.htaccess — は決して配信されません。デフォルトで有効で、設定は不要です。

Forwarded(RFC 7239)および X-Forwarded-* ヘッダーから実際のクライアント IP を取得します。CIDR ベースの信頼設定と、最も右側の非信頼アドレスによる解決に対応します。

/uploads/** のような書き込み可能なパスでの .php 実行をブロックします — レガシーアプリを狙ったアップロードシェル攻撃は、ディスク I/O の前に阻止されます。

ドキュメントルートからのシンボリックリンクによる脱出は、明示的に許可リストへ登録しない限りブロックされます — Laravel の storage:link は問題なく動作します。

Dockerfile に 2 行

アプリをイメージにコピーして実行するだけです。