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 が含まれており、基本的に開発者が一般的に使用するいくつかの通信プロトコルをカバーしています。コルーチン コンポーネントは、サーバーの onConnect、onRequest、onReceive、および onMessage コールバック関数でのみ使用できます。
Swoole バージョン 3.0 では、ZendVM の EG (vm_interrupt) メカニズムに基づいた新しい PHP 組み込みコルーチン スケジューラを実装し、setjmp/longjmp への依存関係を削除しました。
により、Swoole コルーチンを、PHP オブジェクト デストラクター、マジック メソッド、リフレクション関数呼び出し、その他のシナリオを含むあらゆる場所に適用できるようになります。新しいバージョン番号は、Swoole 3.0 に変更されます。当初の計画では、 libco C スタック コルーチンに基づいており、4.0 に延期されました。
コルーチン カーネルの新しいバージョンは PHP-7.1 に依存しているため、Swoole の PHP バージョンへの依存性は 7.1 に増加し、gcc バージョンへの依存性は 4.8 に増加します。
Swoole 4.0 は、boost.context 1.60アセンブリ コードに基づいて新しいコルーチン カーネルを実装します。
PHP 関数呼び出しスタックの保存に基づいて、C スタックのコンテキスト ストレージが追加されます。すべての PHP 構文のサポートを実装しました。コルーチンは、call_user_func、リフレクション、マジック メソッド、array_map などのあらゆる PHP 関数で使用できるようになりました。
4.0 は 2.0 と 100% 互換性があり、コルーチン カーネルのみが再構築され、API レイヤーは変更されていません
4.0 ブランチ コードは C 11 標準にアップグレードされます。 gcc-4.8 以降の上位バージョンの使用を推奨
php7.1 以降をサポート
以上がスウールバージョンの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。