|
|
||
MessagePack という id:viver さんが作られているシリアライズライブラリがあります。よく JSON や XML を使ってデータのやりとりをすることがありますが、それらに比べても速くてコンパクトというすぐれもの。
この MessagePack を利用した RPC が各言語向けにだされてます。
http://github.com/msgpack/msgpack-rpc
それで、ちょうど PHP 版がなかったのと、最近 PHP から Java や C++ を呼び出すことがよくあり、パイプ処理でやるのも面倒になったので MessagePack-RPC for PHP を 実装してみました。
http://github.com/msgpack/msgpack-rpc
http://github.com/h0x10/msgpack-rpc/tree/master/php
本家にとりこんでいただいのでこちらは消しました
MessagePack の PHP 実装については takei-h さんがされたものを利用してます。ありがとうございます。
また内部の実装は id:kzk さんが作られていた Python 版を参考にしながら作りました(とってもわかりやすい)。コーディング規約等については ZendFramework のもので書いて PHP_CodeSniffer で確認していきます。またクラス名やファイル名等については id:sotarok さんにアドバイスをいただきました。ありがとうございました。
http://framework.zend.com/manual/ja/coding-standard.html
いまのところ MessagePack-RPC for PHP の課題として以下をまだ残したままです。
一応、下の記事で書いた Java サーバーの実装サンプルのコードをこちらで呼び出して確認をしています。
ネットワークプログラム関係ってあまりやったことがないので指摘等 @h0x10 までもらえると嬉しいです。
cd /path/to/msgpack-rpc/java/target/classes java -cp .:/path/to/.m2/repository/org/jboss/netty/netty/3.1.5.GA/netty-3.1.5.GA.jar:~:/path/to/.m2/repository/org/msgpack/msgpack/0.2/msgpack-0.2.jar org/msgpack/rpc/sample/ServerTest java -cp .:/path/to/.m2/repository/org/jboss/netty/netty/3.1.5.GA/netty-3.1.5.GA.jar:~:/path/to/.m2/repository/org/msgpack/msgpack/0.2/msgpack-0.2.jar org/msgpack/rpc/sample/ClientTest
大規模データを利用して生活を楽しくしたいな