Repolode
swoole

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. 1

    PECLから拡張機能をインストールする

    pecl install swoole
  2. 2

    HTTPサーバーのサンプルをserver.phpとして保存する

  3. 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 の数値は毎日更新されます。

関連プロジェクト