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

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

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for kubotak kubotak
June 28, 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等をサポート