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 を使用して
## を有効にしますユーザー コードは、イベント ループの各ラウンドの終了時に呼び出される 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 は符号付き整数をサポートしました
ダウンロード アドレス
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 サイトの他の関連記事を参照してください。