Nettyに似た、高性能なプロトコルサーバーやクライアントを構築するための、Swift製クロスプラットフォーム非ブロッキング・イベント駆動ネットワークフレームワーク。
swoole/swoole-src
長時間稼働するTCP、UDP、HTTP、WebSocketサービスの構築に使える、イベント駆動型ネットワークエンジンとコルーチンランタイムを提供するPHP拡張です。
- スター
- 18,927
- フォーク
- 3,147
- 未解決の Issue
- 34
- 最終コミット
- 10 時間前
これは何?
Swooleは、C/C++コアでイベントループ、コルーチンスケジューラ、サーバー、クライアント、プロトコル実装を提供するPHP拡張です。リクエストごとに別のPHPプロセスを起動することなく、PHPアプリケーションを常駐型のネットワークサービスとして動作させ、多数の接続を同時に処理できます。
この拡張には、TCP、UDP、Unixソケット、HTTP、WebSocket向けのサーバークラスと、上流へのTCPおよびHTTP通信に使うコルーチンクライアントが含まれます。コルーチンを使うと、対応するI/Oの完了を待つ間、ワーカーはほかのタスクを実行できます。複数のワーカープロセスで複数のCPUコアを利用でき、タスクワーカーはリクエスト処理をブロックすべきでないジョブを担当します。
Swooleのワーカーは長時間稼働するため、グローバル状態や開いたリソースがリクエストをまたいで保持されることがあり、慎重な管理が必要です。コルーチンが提供するのは並行処理であり、CPU処理の自動的な並列化ではありません。同梱のPHPライブラリには、PDO、MySQLi、Redis向けのコネクションプールと、WaitGroupやBarrierなどのユーティリティが含まれます。
主な機能
- 01複数の待ち受けポートに対応した、イベント駆動型のTCP、UDP、Unixソケットサーバー
- 02リクエストコールバックとメッセージコールバックを基盤とするHTTPおよびWebSocketサーバー
- 03チャネルと、コルーチンに対応したソケットI/OおよびシステムI/Oを備えるコルーチンスケジューラ
- 04上流への通信に使うコルーチン対応のTCP、UDP、HTTPクライアント
- 05選択したブロッキングPHP関数を、コルーチン内で中断可能にするランタイムフック
- 06プロセス間連携のためのProcess、共有テーブル、Atomic API
ユースケース
- 多数のリクエストにわたってメモリ上で常駐するHTTP APIの構築
- PHPによるリアルタイムのWebSocketメッセージ配信
- PHPでのカスタムTCP/UDPプロトコルゲートウェイの実装
- 1つのリクエスト内で複数の上流サービスを並行して呼び出す処理
クイックスタート
- 1
PECLから拡張機能をインストールする
pecl install swoole - 2
HTTPサーバーのサンプルをserver.phpとして保存する
- 3
PHPでサーバーを起動する
php server.php
使う前に知っておきたいこと
- PHP拡張機能のため、PHPをインストールし、php.iniで拡張機能を読み込む必要があります。
- コルーチンはCPUの並列処理を実現しません。CPU負荷の高いコードは引き続きワーカーをブロックします。
- ワーカーは長時間稼働するため、グローバル変数や静的状態がリクエスト間で保持されることがあります。リクエストごとのデータの扱いには注意が必要です。
- masterブランチはSwoole 6.3およびPHP 8.2~8.5を対象としているため、本番環境ではリリース済みバージョンを選んでください。
トピック
よくある質問
- swoole-src とは?
- 長時間稼働するTCP、UDP、HTTP、WebSocketサービスの構築に使える、イベント駆動型ネットワークエンジンとコルーチンランタイムを提供するPHP拡張です。 Swooleは、C/C++コアでイベントループ、コルーチンスケジューラ、サーバー、クライアント、プロトコル実装を提供するPHP拡張です。リクエストごとに別のPHPプロセスを起動することなく、PHPアプリケーションを常駐型のネットワークサービスとして動作させ、多数の接続を同時に処理できます。
- swoole-src は無料で使えますか?ライセンスは?
- swoole-src は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- swoole-src は今もメンテナンスされていますか?
- 活発にメンテナンス中。swoole-src の最終コミットは 2026年10月24日 です。
- swoole-src は何に使えますか?
- 多数のリクエストにわたってメモリ上で常駐するHTTP APIの構築 PHPによるリアルタイムのWebSocketメッセージ配信 PHPでのカスタムTCP/UDPプロトコルゲートウェイの実装 1つのリクエスト内で複数の上流サービスを並行して呼び出す処理
- swoole-src のインストール方法は?
- PECLから拡張機能をインストールする: pecl install swoole HTTPサーバーのサンプルをserver.phpとして保存する PHPでサーバーを起動する: php server.php
- swoole-src はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/swoole/swoole-src
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
JetBrainsが開発する、マイクロサービスやWebアプリケーション、HTTP APIを構築するための非同期Kotlinフレームワーク。
非同期コード向けに、コルーチンビルダー、Dispatcher、Flow、Channel、構造化並行性のプリミティブを提供するKotlinライブラリ。
Vert.x coreは、JVM上でリアクティブなイベントループベースのアプリケーションを構築するための低レベルツールキットで、HTTP、TCP、ファイルシステムへのアクセスを提供します。
Node.jsを支えるイベントループを提供する、クロスプラットフォーム対応の非同期I/O用Cライブラリ。
fasthttpエンジンを基盤とした、REST APIやWebサーバーの構築に使えるExpress.jsに着想を得たGo向けWebフレームワーク。