ホームページ >バックエンド開発 >PHPチュートリアル >php MessagePack の紹介_PHP チュートリアル

php MessagePack の紹介_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:13:16984ブラウズ

1. 今日、ハックニュースで多くの人がメッセージパックについて議論しているのを見ました。まず MessagePack とは何かを理解します。MessagePack はバイナリベースの効率的なオブジェクトシリアル化ライブラリであり、JSON などの多くの言語間で構造化オブジェクトを交換できます。ただし、JSON とは異なり、非常に高速で小さいです。

2. 著者は、MessagePack には 2 つの主な用途があると説明しています。1 つは、スペース効率の高い Memcache エントリ (Pinterest) のストレージ、もう 1 つは RPC 送信用です。 RPC システムを設計するとき、最初のタスクの 1 つは通信プロトコルを指定して実装することです。このプロセスは、エンディアンのような多くの低レベルの問題を考慮する必要があるため、非常に複雑になります。 MessagePack を使用すると、通信プロトコルの設計と実装を完全にスキップし、開発を加速できます。

3. 議論の余地がある点は、MessagePack のベンチマークは、protocolBuffer や Json よりも何倍も高速であると述べていることです。しかし、それを信じず、JavaScript (json と messagePack) でテストを行う人もいます。 MessagePack は json よりも約 10% 少ないデータしか圧縮せず、圧縮と解凍の時間は json パーサーよりもはるかに時間がかかることがわかります。

4. 「MsgPack と JSON: 1 行のコードでクライアントとサーバーの交換トラフィックを 50% 削減」 この記事では、messagePack を使用してサーバーを最適化し、サーバー上のデータ量を削減し、帯域幅をより適切に使用します。 。著者は、クライアントではむしろ 0.5 ミリ秒から 1 ミリ秒を無駄にしたいと強調しましたが、サーバーは Ruby の MessagePack パーサーを使用しており、これは JSON より 5 倍高速である可能性があります。

JSON

との違いは、MsgPack が

バイナリベース であることです。これにより、交換されるデータ a) を小さくし、使用するバイト数を減らすことができます 。その利点は誰もが知っていると思いますが、次のような利点があります。さらに大きな利点: b) パーサーで 40 バイトを解析すると、20 バイトを解析する場合の約 2 倍の時間がかかり、解析 とエンコード が高速になります。 myJSONString = JSON.stringify(myObject); var myByteArray = msgpack.pack(myObject);
MessagePack の作成者は、ブログの作成者が説明したように、MessagePack がクライアント側のシリアル化には最適な選択ではない可能性もあると考えています。2 の作成者の言葉を引用するのは少し悲劇的です。

5. Bson は Json のバイナリ形式ですが、文法的には Json と互換性がありません。ただし、MessagePack はセマンティックな一貫性を保証します。 6. シーンの要件が異なると、テクノロジーの適用方法も異なります。
PHP Trial MessagePack


JSON に似ていますが、高速で小さいです

この文に惹かれて見に行きました。
公式ウェブサイト: http://msgpack.org

公式のインストール方法は誤解を招きます。msgpack ディレクトリの下に php ディレクトリはありません...csharp、erlang、go、java、ruby およびその他のディレクトリのみが表示されます。 。


コードをコピーします
コードは次のとおりです:

git clone https://github.com/msgpack/msgpack.git
cd msgpack/php
phpize
./configure && make && make install



この拡張機能は PHP 公式 Web サイトでまだ見つかりました: http://pecl.php.net/package/msgpack
最終更新時間: 2012 年 9 月 14 日、昨日のバージョン。

インストールプロセスを添付します:
コードをコピーします

コードは次のとおりです:


wget http://pecl.php.net/get/msgpack-0.5.2.tgz
tar zxf msgpack -0.5.2.tgz
cd msgpack-0.5.2
/usr/local/hx/php/bin/phpize
./configure --with-php-config=/usr/local/hx/php/bin/php -config
make && make install



次に、msgpack.so を php.ini に追加し、php を再起動して、インストールを完了します。

テストの開始:
$data = array(0=>'abcdefghijklmnopqrstuvwxyz',1=>'Xiamen','abc'=>'1234567890');

msgpack_pack、json_encode、serialize、length をそれぞれ設定します。は: 50、62、87
それぞれ 10,000 回実行、時間がかかります: 9.95 ミリ秒、17.45 ミリ秒、8.85 ミリ秒
ロック解除の実行が 10,000 回、時間がかかります: 14.76 ミリ秒、23.93 ミリ秒、14.61 ミリ秒

msgpackのパフォーマンスは少なくとも json50% 以上、速度はシリアライズとほぼ同じですが、シリアライズはかなり多くのスペースを消費します。

さらに、中国語には msgpack_pack を使用することもできます。json を使用する場合は、json_encode を行う前に utf-8 にバッチ変換する必要があります。

引用:

1、MessagePack公式サイト

2、MsgPack と JSON: 1 行のコードでクライアントとサーバーの交換トラフィックを 50% 削減します

HNコメントアドレス:http://news.ycombinator.com/item?id=4090831

3.MessagePackについての私の考え

HNコメントアドレス:http://news.ycombinator.com/item?id=4092969

4 JS での MessagePack と JSON のパフォーマンスの比較

HNコメントアドレス:http://news.ycombinator.com/item?id=4091051

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/313487.html技術記事 1. 今日、ハックニュースでメッセージパックについて多くの人が議論しているのを見ました。まず MessagePack とは何かを理解してください。MessagePack は、バイナリベースの効率的なオブジェクトシリアル化ライブラリです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。