MessagePack-RPC for PHP の実装

MessagePack という id:viver さんが作られているシリアライズライブラリがあります。よく JSONXML を使ってデータのやりとりをすることがありますが、それらに比べても速くてコンパクトというすぐれもの。

この MessagePack を利用した RPC が各言語向けにだされてます。
http://github.com/msgpack/msgpack-rpc


それで、ちょうど PHP 版がなかったのと、最近 PHP から JavaC++ を呼び出すことがよくあり、パイプ処理でやるのも面倒になったので MessagePack-RPC for PHP を 実装してみました。
http://github.com/msgpack/msgpack-rpc
http://github.com/h0x10/msgpack-rpc/tree/master/php
本家にとりこんでいただいのでこちらは消しました


MessagePack の PHP 実装については takei-h さんがされたものを利用してます。ありがとうございます。
http://lab.klab.org/young/2009/11/%E3%82%A2%E3%82%B7%E3%82%A2%E3%83%ABklab%E5%90%88%E5%90%8C%E5%8B%89%E5%BC%B7%E4%BC%9A%E3%81%A7%E7%99%BA%E8%A1%A8%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F-messagepack%E3%81%AEphp-extension%E3%81%AB/


また内部の実装は 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