ホームページ  >  記事  >  PHPフレームワーク  >  swoole がコルーチンを実装する方法

swoole がコルーチンを実装する方法

(*-*)浩
(*-*)浩オリジナル
2019-12-07 14:11:002860ブラウズ

Swoole には 2.0 以降コルーチン機能が組み込まれており、コルーチン機能を備えた IO インターフェイスを提供します (名前空間 Swoole\Coroutine\* に統合されています)。

コルーチンを有効にする場合は、コンパイル時に --enable-coroutine コンパイル オプションを追加してください。

swoole がコルーチンを実装する方法

コルーチンは、プリエンプションではなくコラボレーションを通じて切り替える純粋なユーザーモード スレッドとして理解できます。プロセスやスレッドと比較して、コルーチンのすべての操作はユーザー モードで完了でき、作成コストや切り替えコストが低くなります。 (推奨学習: 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。