このプロジェクトについて

Swooleは、イベント駆動・非同期・コルーチンベースの並行処理ランタイムを提供するPHP拡張機能です。C拡張として書かれており、PECLからインストールするか、ソースからコンパイルします。Linux、macOS、Cygwin、またはWSL、PHP 8.2以降、GCC 4.8以降が必要です。 READMEに記載されている主要機能: - コルーチン: 組み込みのコルーチンスケジューリングにより、開発者は同期のように見えるPHPコードを非同期で実行できます。コルーチンは超軽量スレッドと説明されており、単一プロセスで数千個作成できます。 - ランタイムフック: Swoole\Runtime::enableCoroutine() はZend VMのストリーム関数ポインタを置き換え、ブロッキングI/O関数を非ブロッキングかつコルーチンでスケジュールされるようにします。対応統合には、ext-curl(SymfonyおよびGuzzle)、ext-redis、ext-mysqli、複数のPDOドライバ(MySQL、PostgreSQL、SQLite、Oracle、ODBC)、TCP/UDP/UDG/Unix/SSL-TLS上のストリーム関数とファイルシステムAPI、ext-sockets、ext-soap、sleep関数、proc_open、gethostbyname、shell_exec、exec、およびfread/fopen/fsockopen/fwrite/flockなどのファイル関数が含まれます。 - サーバー: HTTP、WebSocket、HTTP/2、TCPサーバーは1つのイベントループを共有できます。WebSocketサーバーの例では、2番目のポートで生のTCPもリッスンします。ネットワーク層はepoll/kqueueを使用します。 - クライアント: HTTP、WebSocket、HTTP/2、TCP用のコルーチンクライアントが示されており、DNS、リクエスト、レスポンスの処理が自動的にスケジュールされます。 - チャネル: Swoole\Coroutine\Channel はコルーチン間のCSPスタイルの通信を提供し、Redis接続プールとプロデューサー/コンシューマーの例で実証されています。 - タイマー: Swoole\Timer::tick、after、clear、existsに加え、コルーチンベースのスリープループ。 - 混合ワークロード: READMEは、ランタイムフックを使用して単一プロセス内で10Kスリープ、ファイル読み書き、PDO/MySQLiクエリ、TCP/UDPサーバー・クライアント交換を示しています。 インストールオプションはPECL(pecl install swoole)またはソースビルド(phpize、configure、make、make install)で、--enable-openssl、--enable-sockets、--enable-mysqlnd、--enable-swoole-curlなどのオプションフラグがあります。非同期クライアントとAPIはバージョン4.3.0以降、別のswoole_async拡張機能に移動されました。プロジェクトはApache 2.0ライセンスであり、ドキュメントはwiki.swoole.com、IDEヘルパーリポジトリ、Awesome Swooleリスト、Twitter、Discord、中国語コミュニティなどのコミュニティチャネルを指しています。