ホームページ バックエンド開発 PHPチュートリアル Swoole 1.10.0 の新バージョンがリリースされ、多くの新機能分析が追加されました

Swoole 1.10.0 の新バージョンがリリースされ、多くの新機能分析が追加されました

Jul 02, 2018 pm 05:58 PM
swoole バージョン

Swoole 1.10.0 バージョンが最近リリースされ、多くの新機能が追加されましたので、次の記事では主に Swoole 1.10.0 バージョンの新機能に関する関連情報を紹介し、参考と学習のために共有します。以下へ

#まえがき#Swoole は、インターネット、モバイル通信、エンタープライズ ソフトウェア、クラウド コンピューティング、オンライン ゲームなどで広く使用できます。モノのインターネット(IOT)、車両のインターネット、スマートホームなどの分野。 PHP Swoole をネットワーク通信フレームワークとして使用すると、企業の IT 研究開発チームの効率が大幅に向上し、革新的な製品の開発にさらに集中できます。最近、PHP の非同期、並列、高性能ネットワーク通信エンジン Swoole のバージョン 1.10.0 がリリースされました。このバージョンでは、いくつかの新機能が追加されています。以下では多くを語る必要はありません。詳細な紹介を見てみましょう。

自動 DNS 解決
非同期クライアントの新しいバージョンでは、ドメイン名を解決するために swoole_async_dns_lookup を使用する必要がなくなりました。最下層は自動ドメイン名解析を実装します。クライアントは、connect メソッドの実行時にドメイン名を直接渡すことができます。

$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
$client->on("connect", function(swoole_client $cli) {
 $cli->send("GET / HTTP/1.1\r\n\r\n");
});
$client->on("receive", function(swoole_client $cli, $data){
 echo "Receive: $data";
 $cli->send(str_repeat('A', 100)."\n");
 sleep(1);
});
$client->on("error", function(swoole_client $cli){
 echo "error\n";
});
$client->on("close", function(swoole_client $cli){
 echo "Connection close\n";
});
//底层会自动进行异步域名解析
$client->connect('www.baidu.com', 9501);
ログイン後にコピー

遅いリクエストのログ
新しいバージョンでは、遅いリクエストの追跡が追加されていますリクエスト 遅いリクエストの PHP 関数呼び出しスタックを記録できる関数。

function test()
{
 test_sleep();
}
function test_sleep()
{
 echo "sleep 5\n";
 sleep(5);
}
$server = new swoole_server('127.0.0.1', 9501);
$server->set([
 'worker_num' => 1,
 'task_worker_num' => 1,
 'trace_event_worker' => true,
 'request_slowlog_timeout' => 1,
 'request_slowlog_file' => '/tmp/trace.log',
]);
$server->on('Receive', function($serv, $fd, $reactor_id, $data) {
 test();
 $serv->send($fd, "Swoole: $data");
});
$server->start();
ログイン後にコピー

遅いリクエストを処理した後、/tmp/trace.log ログにエラー メッセージの行が出力されます:

[08-Jan-2018 15:21:57] [worker#0] pid 26905
[0x00007f60cda22340] sleep() /home/htf/workspace/swoole/examples/server/trace.php:10
[0x00007f60cda222e0] test_sleep() /home/htf/workspace/swoole/examples/server/trace.php:4
[0x00007f60cda22280] test() /home/htf/workspace/swoole/examples/server/trace.php:28
[0x00007f60cda22190] {closure}() /home/htf/workspace/swoole/examples/server/trace.php:42
[0x00007f60cda22140] start() /home/htf/workspace/swoole/examples/server/trace.php:42
ログイン後にコピー

#新しいストリーム モジュール

##新しいストリーム モジュールは、Reactor、Worker、Task 間の通信を行います。プロセスがより便利になり、柔軟で最大限のデカップリングが可能になります。複雑なオンライン プロジェクトでは、ストリーム モードを使用して、リクエストの割り当てとスケジュールをより効率的にします。

$serv = new swoole_server("127.0.0.1", 9501);
$serv->set(array(
 'dispatch_mode' => 7,
 'worker_num' => 2,
));
$serv->on('receive', function (swoole_server $serv, $fd, $threadId, $data)
{
 var_dump($data);
 echo "#{$serv->worker_id}>> received length=" . strlen($data) . "\n";
});
$serv->start();
ログイン後にコピー

Reactor と Worker の間の通信、dispatch_mode = 7 を使用して通信を有効にします

  • Worker と Task の間で、task_ipc_mode = 4 を使用して

  • #Add Event::cycle function

## を有効にしますユーザー コードは、イベント ループの各ラウンドの終了時に呼び出される EventLoop フック関数をカスタマイズできます。独自のスケジューラを実装するには、Generator Yield または Promise クラスの Swoole フレームワークを使用すると便利です。

Swoole\Timer::tick(2000, function ($id) {
 var_dump($id);
});
Swoole\Event::cycle(function () {
 echo "hello [1]\n";
 Swoole\Event::cycle(function () {
 echo "hello [2]\n";
 Swoole\Event::cycle(null);
 });
});
ログイン後にコピー

その他の更新

テーブルを更新::incr と Table::decr は符号付き整数をサポートしました

  • PHP-7.2 バージョンと互換性がありました

  • Event::del 関数がサポートされないことを修正しました標準入力ハンドル削除の問題

  • タスクプロセスのタイマー間隔がクライアント受信タイムアウト未満となり、Client::recvデッドロックが発生する問題を修正しました

  • ssl_host_name 構成項目を追加して、SSL/TLS ホストの正当性を検証します

  • dispatch_mode = 3 を使用すると、すべてのワーカーがビジー状態になるとエラー ログが出力されます

  • リスニング ポートのすべての接続をトラバースするポート イテレータを追加します

  • 非 x86 プラットフォームでのテーブルのメモリ アライメントの問題を修正します

  • BASE モードでの無効な max_request 構成の問題を修正

  • ##一部のクライアント ping フレームにマスク データが含まれている場合に、WebSocket サーバーが間違ったパケットを返す問題を修正
  • HttpClient が HEAD メソッドを使用して Content-Length で応答し、スタックする問題を修正します。
  • MySQL 非同期クライアントのサポートを強化します。 JSON 形式の場合
  • ダウンロード アドレス

GITHUB: https://github.com/swoole/ swoole-src/ releases/tag/v1.10.0オープンソース中国: https://gitee.com/swoole/swoole/tree/v1.10.0/
PECL: https:/ /pecl.php.net/package/swoole/1.10.0

ローカル ダウンロード: http://xiazai.jb51.net/201801/yuanma/swoole-src-1.10.0(jb51.net)。 rar

概要

興味があるかもしれない記事:

PHP 実装右回り印刷マトリックス (スパイラル マトリックス) メソッドの例の説明

バイナリ ツリーが対称かどうかを判断する PHP の実装方法

PHP では 1 行のコードを使用します。 ディレクトリ内のすべてのファイルを削除する方法の例


#

以上がSwoole 1.10.0 の新バージョンがリリースされ、多くの新機能分析が追加されましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

numpyのバージョンを簡単に確認する方法 numpyのバージョンを簡単に確認する方法 Jan 19, 2024 am 08:23 AM

numpyのバージョンを簡単に確認する方法

Mavenのバージョンを確認する方法 Mavenのバージョンを確認する方法 Jan 17, 2024 pm 05:06 PM

Mavenのバージョンを確認する方法

Linux での CURL バージョンの更新に関するチュートリアル! Linux での CURL バージョンの更新に関するチュートリアル! Mar 07, 2024 am 08:30 AM

Linux での CURL バージョンの更新に関するチュートリアル!

pip バージョンを更新する簡単な手順: 1 分で完了します pip バージョンを更新する簡単な手順: 1 分で完了します Jan 27, 2024 am 09:45 AM

pip バージョンを更新する簡単な手順: 1 分で完了します

Kirin オペレーティング システムのバージョンとカーネルのバージョンを確認する Kirin オペレーティング システムのバージョンとカーネルのバージョンを確認する Feb 21, 2024 pm 07:04 PM

Kirin オペレーティング システムのバージョンとカーネルのバージョンを確認する

PHPバージョンNTSの意味と違いを解釈する PHPバージョンNTSの意味と違いを解釈する Mar 27, 2024 am 11:48 AM

PHPバージョンNTSの意味と違いを解釈する

WindowsにPythonを簡単にインストールする方法、2つの方法から選択可能 WindowsにPythonを簡単にインストールする方法、2つの方法から選択可能 Feb 18, 2024 pm 04:57 PM

WindowsにPythonを簡単にインストールする方法、2つの方法から選択可能

インストールされている Oracle のバージョンを簡単に確認する方法 インストールされている Oracle のバージョンを簡単に確認する方法 Mar 07, 2024 am 11:27 AM

インストールされている Oracle のバージョンを簡単に確認する方法

See all articles