機能

スタックが担っていたすべてを、1 つのバイナリで実現

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

Run PHP

実行モデル

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

ワーカーモード

01

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

ファイバー多重化

02

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

非同期 Promise

03

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

早期レスポンス

04

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

デコレーター

05

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

SSE ストリーミング

06

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

Serve

HTTP と配信

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

3 つのルーティングモード

07

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

静的ファイル

08

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

Brotli 圧縮

09

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

組み込み TLS

10

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

レート制限

11

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

タイムアウト

12

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

カスタムエラーページ

13

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

グレースフルシャットダウン

14

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

Coordinate

共有状態

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

カウンター

15

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

アトミック

16

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

フラグ

17

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

Once

18

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

ミューテックス

19

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

チャネル

20

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

マップ

21

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

プール

22

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

Observe

可観測性

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

Prometheus メトリクス

23

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

構造化ログ

24

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

リクエストID

25

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

トレーシングと APM

26

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

組み込みプロファイラー

27

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

ヘルスチェック

28

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

Protect

セキュリティ

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

ドットパスのブロック

29

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

信頼済みプロキシ

30

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

PHP 実行の拒否リスト

31

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

シンボリックリンクの許可パス

32

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

Dockerfile に 2 行

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