Swoole 2.0 の正式版がリリースされました。バージョン 2.0 の最大のアップデートは、コルーチンのサポートが追加されたことです。正式版はPHP5とPHP7の両方をサポートしています。
Swoole2.0 コルーチンに基づいて、PHP 開発者は同期方式でコードを記述することができ、最下層がコルーチンを自動的にスケジュールし、非同期 IO に変換します。
従来の非同期プログラミングにおける入れ子になったコールバックの問題を解決します。 (推奨学習: swoole ビデオ チュートリアル )
Node.js (ES6)、Python、その他の言語での yield/generator と async/await の実装と比較して、Swoole コルーチンは必要ありませんコードは追加のキーワードを追加します。
Go 言語のゴルーチンと比較すると、Swoole コルーチンは組み込みです。アプリケーション層のコードは、コルーチンを開始するために go キーワードを追加する必要はありません。カプセル化されたコルーチン クライアントを使用するだけでよく、よりシンプルです。使用します。さらに、Swoole コルーチンの IO コンポーネントには最下層にタイムアウト メカニズムが組み込まれているため、クライアント タイムアウトを実装するために複雑な選択/チャン/タイマーを使用する必要はありません。
現在、Swoole の下部に組み込まれているコルーチン クライアント コンポーネントには、udpclient、tcpclient、httpclient、redisclient、mysqlclient が含まれており、基本的に開発者が一般的に使用するいくつかの通信プロトコルをカバーしています。 Coroutine コンポーネントは、サーバーの onConnect、onRequest、onReceive、および onMessage コールバック関数でのみ使用できます。
swole コルーチンの使用
コルーチンの使用方法:
go()( \ Swoole\Coroutine::create() の略語) コルーチンを作成します
go() のコールバック関数に、コルーチンが実行する必要があるコードを追加します。 -blocking code
use Swoole\Coroutine as Co; // 常用的缩写方式 go(function () { // 创建协程, 回调函数中写需要在协程中执行的代码 echo "daydaygo"; Co::sleep(1); // 不能是阻塞代码 });
Coroutine
上記のように、go() を使用してコルーチンを作成します
swoole サーバーでは、最下層は自動的に onRequet、onReceive、onConnect およびその他のイベント コールバックの前にコルーチンを自動的に作成します。
enable_coroutine パラメーターをオンにした後の影響範囲: 主に Timer タイマーも含まれます
コルーチンtask_enable_coroutine を使用して開かれたタスク プロセスのバージョン。onTask コールバックの前にコルーチンが自動的に作成されます。
プロセスとプロセス プールはコルーチンの有効化をサポートし、有効化後に作成された子プロセスはコルーチンを自動的に作成します
りー以上がswooleコルーチンを有効にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。