Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHPでWebSocketサーバーを実装しよう2025

 PHPでWebSocketサーバーを実装しよう2025

PHPカンファレンス2025

Avatar for kubotak

kubotak

June 28, 2025
Tweet

More Decks by kubotak

Other Decks in Programming

Transcript

  1. Copyright© M&Aクラウド Profile 久保⽥ 賢⼆朗 kubotak-is kubotak_public kenjiro.kubota 株式会社M&Aクラウド所属 TypeScript

    PHP https://kubotak.page プロフェッショナルWebプログラミング Laravel (共著) 愛⽝:⾖柴 kubotak
  2. Copyright© M&Aクラウド 今⽇話すこと、話さないこと ⭕ 話すこと ❌ 話さないこと • ⼀般的なPHPアプリケーションとWebSocketサーバーの⼤まかな違い •

    PHPでWebSocketサーバーを実装できるライブラリ‧ミドルウェアの紹介 • それらのライブラリ‧ミドルウェアがどのようにノンブロッキング処理を扱ってい るのか • 各ライブラリ‧ミドルウェアの詳細 • WebSocketの実運⽤やセキュアに扱うこと
  3. Copyright© M&Aクラウド ブロッキング 処理1 HTTP API Call 処理2 Database 時間

    前の処理が終わらないと次の処理を実⾏しな い、⼿続き型に実⾏されるプログラム
  4. Copyright© M&Aクラウド ノンブロッキング 処理1 HTTP API Call 処理2 Database 時間

    I/O待ちある処理の間に別の処理を実⾏する、 並⾏プログラム
  5. Copyright© M&Aクラウド イベントループの概念 Event Event Event Event Event Event Database

    File System Network … … … 完了したものが戻る 完了を待たずに次々に実⾏ Response Request Event Queue Thread Pool/ Worker Thread Event Loop
  6. Copyright© M&Aクラウド https://roadrunner.dev RoadRunnerは、Go⾔語で書かれた⾼性能なPHPアプリケーションサーバーです。 特徴としては、 • ⾼性能 ◦ PHPワーカープロセスを常駐させることでbootstrap処理を削減 •

    マルチプロトコル対応 ◦ HTTP、gRPC、TCPなどをサポート • プラグインアーキテクチャ ◦ 機能を拡張可能なプラグインシステム • メモリ効率 ◦ ワーカープロセスの再利⽤でメモリ使⽤量を最適化
  7. Copyright© M&Aクラウド https://www.swoole.com Swooleは、C/C++で作られたPHPの拡張モジュールでイベント駆動型の⾮同期処理やコルーチ ンに基づく並列ネットワークエンジンです。 • ⾼性能: C/C++で実装されたコアエンジンによる⾼速処理 • ⾮同期処理:

    イベント駆動型アーキテクチャによる効率的なI/O処理 • コルーチン: 軽量なコルーチンによる並⾏処理 • メモリ常駐: プロセスが常駐することによるオーバーヘッドの削減 • マルチプロトコル対応: HTTP、WebSocket、TCP、UDP等をサポート