Swoole には 2.0 以降コルーチン機能が組み込まれており、コルーチン機能を備えた IO インターフェイスを提供します (名前空間 Swoole\Coroutine\* に統合されています)。
コルーチンを有効にする場合は、コンパイル時に --enable-coroutine コンパイル オプションを追加してください。
コルーチンは、プリエンプションではなくコラボレーションを通じて切り替える純粋なユーザーモード スレッドとして理解できます。プロセスやスレッドと比較して、コルーチンのすべての操作はユーザー モードで完了でき、作成コストや切り替えコストが低くなります。 (推奨学習: swoole ビデオ チュートリアル )
Swoole はリクエストごとに対応するコルーチンを作成し、IO ステータスに従ってコルーチンを合理的にスケジュールできます。これにより、次の利点が得られます :
開発者は、同期コード記述を使用して、意識することなく非同期 IO の効果とパフォーマンスを実現でき、従来の非同期コールバックによって引き起こされる個別のコード ロジックや複数のコールバック層に閉じ込められて保守不能なコードが発生することを回避できます。
同時に、swoole はコルーチンを最下層でカプセル化するため、従来の PHP 層のコルーチン フレームワークと比較して、開発者はコルーチン IO 操作を識別するために yield キーワードを使用する必要がありません。セマンティクスが深く理解され、各レベルの呼び出しが yield に変更されるため、開発効率が大幅に向上します。
コルーチン API は現在、TCP や UDP などの主流プロトコルのクライアント カプセル化をターゲットとしています。
UDP
TCP
HTTP
Mysql
Redis
は、ほとんどの開発者のニーズを満たすことができます。プライベート プロトコルの場合、開発者はコルーチンの TCP または UDP インターフェイスを使用してカプセル化を簡単に行うことができます。
有効にする
Prerequisite:
PHP バージョン要件: >= 5.5 (5.5、5.6、7.0、7.1 を含む)
swoole_server または swoole_http_server に基づいて開発します。現在、コルーチンは、onRequet、onReceive、onConnect、およびその他のイベント コールバック関数でのみサポートされています。
swoole_server および swoole_http_server は、各リクエストに対応するコルーチンを作成します。開発者は、onRequet、onReceive、および onConnect イベント コールバックでコルーチン クライアントを使用できます。
以上がswoole がコルーチンを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。