ホームページ  >  記事  >  バックエンド開発  >  PHP 用の非同期並列 C 拡張機能である swoole-1.8.0 がリリースされました

PHP 用の非同期並列 C 拡張機能である swoole-1.8.0 がリリースされました

WBOY
WBOYオリジナル
2016-06-20 12:38:421292ブラウズ

このバージョンはマイルストーンとなる新しいバージョンであり、多くの新機能、多くのコア機能の最適化と問題の修正が追加され、無効な機能が削除されています。更新内容は次のとおりです。

クライアント

  • ネイティブ非同期 MySQL クライアントの追加

  • ベースのネイティブ非同期 Redis クライアントの追加on Redis によって正式に提供される Hiredis ライブラリ

  • ネイティブ非同期 Http クライアントを追加します

  • ネイティブ非同期 WebSocket クライアント サポートを追加します

  • 基礎となる swClient を再構築し、非同期 TCP クライアント実装を swoole カーネルに組み込みます。

  • swoole_client->reuse 属性を追加します。SWOOLE_KEEP は、長い接続で再利用するかどうかを識別しますモード接続

サーバー側

  • WebSocket サーバー コードを再構築し、最下層は length_check プロトコルと同じ処理関数を再利用して安定性を強化します

  • タスク プロセスでのティック/アフター タイマーのサポートを追加します。基礎となる実装は、高精度の setitimer+ 信号に基づいています。

  • 渡されたホストを保存します。 swoole_server オブジェクト属性へのコンストラクター、port パラメーター

  • マルチポートおよびマルチプロトコルのサポートの追加 (重要な更新)

  • Add swoole_server- >defer 関数 一部の関数を遅延させて実行します。

  • swoole_server->close オプションを追加して、接続を強制的に切断します。 2 番目のパラメータを true に設定すると、送信キューがクリアされて切断されます。すぐに接続します

マルチポート マルチプロトコルの例:

$serv = new swoole_server("0.0.0.0", 9501);$port2 = $serv->listen('127.0.0.1', 9502, SWOOLE_SOCK_TCP);$port2->set(array(    'open_length_check' => true,    'package_length_type' => 'N',    'package_length_offset' => 0,       //第N个字节是包长度的值    'package_body_offset' => 4,       //第几个字节开始计算长度    'package_max_length' => 2000000,  //协议最大长度));$port2->on('receive',  function (swoole_server $serv, $fd, $from_id, $data)  {    echo "ServerPort2\n";});$serv->on('connect', function ($serv, $fd, $from_id){    echo "[#".posix_getpid()."]\tClient@[$fd:$from_id]: Connect.\n";});$serv->on('receive', function (swoole_server $serv, $fd, $from_id, $data) {    echo "[#".$serv->worker_id."]\tClient[$fd]: $data\n";    if ($serv->send($fd, "hello\n") == false)    {        echo "error\n";    }});$serv->on('close', function ($serv, $fd, $from_id) {    echo "[#".posix_getpid()."]\tClient@[$fd:$from_id]: Close.\n";});$serv->start();

その他

  • キーを保存するために swoole_table を追加しますforeach がテーブルのキー値を走査するときに取得できる値。

  • swoole_table のキー比較モードを crc32 比較から直接文字列比較に変更します

  • utlist.h ライブラリをバージョン 1.9.9 に更新します。

Swoole_table の Key 値を保存すると、たとえばテーブルのサイズが 100 万の場合、メモリ使用量が増加します。 、KEY 値のストレージによりメモリ使用量が 64M 増加します

問題の修正

  • メッセージ キューを有効にした後の二重解放の問題を修正します

  • タイマーを再構築し、After タイマーと Tick タイマーを修正する 時折発生するコア ダンプの問題

  • タイマーは最小のヒープ データ構造を使用し、挿入/削除の時間の複雑さは次のとおりです。 log(N)

  • PHP7 でコア ダンプを引き起こす swoole_process::signal の問題を修正

  • PHP7 でコア ダンプを引き起こす swoole_async_write の問題を修正PHP7

機能の削除

  • heartbeat_ping、dispatch_key_type などのサポートされていない機能に関連する過去のレガシー コードを削除します。

  • swoole_server->addtimer、swoole_server->deltimer、swoole_server->gettimer を削除します

  • swoole_timer_add、swoole_timer_del を削除します

  • swoole_server の onTimer イベントを削除します

  • task_worker_max 構成と関連機能コードを削除します

  • swoole_server->handler メソッドを削除します

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