Nov 30
こんにちは。takei-hです。
ちょっと時間が経ってしまったのですが、アシアル株式会社、KLab株式会社の合同勉強会でMessagePackとPHP Extensionについて発表しましたので、資料を公開します。
Php Meets Messagepack
View more documents from Hideyuki Takei.
また、PHP Extensionもだいたい形になったので、公開します。
MessagePack PHP Extensionのダウンロード
ソースを解凍した後、インストールは以下のコマンドで。
$ ./configure $ make $ sudo make install
そして、php.iniに以下の行を追加します。
extension=msgpack.so
これで準備完了です。
主に、ruby版のライブラリを参考にしています。使い勝手はPHPのjsonと同じような感じで、msgpack_pack()とmsgpack_unpack()です。
使い方はこんな感じ↓
1), array("takei"=>"hide"), 3);
var_dump($data);
// serialize
$msg = msgpack_pack($data);
// hexadecimal
$str = unpack('H*', $msg);
var_dump("0x".$str[1]);
// deserialize
$ret = msgpack_unpack($msg);
var_dump($ret);
?>
また、ruby版と同様、ストリーミングデシリアライゼーションも可能です。
initialize();
$buffer = "";
$nread = 0;
foreach($msgs as $msg){
$buffer = $buffer . $msg;
while(true){
$nread = $unpacker->execute($buffer, $nread);
if($unpacker->finished()){
$msg = $unpacker->data();
var_dump($msg);
$unpacker->initialize();
$buffer = substr($buffer, $nread);
$nread = 0;
if(!empty($buffer)){
continue;
}
}
break;
}
}
?>
まだ完全なテストやベンチマークはとっていないのでこれからやろう。。。と思っていたら、本日、MessagePackのPHP Extensionを公開された方がいたようです!(うぅ)
MessagePackのPHP Extensionを作りました
トロトロしている間に。。でもせっかくなので私も公開させてもらいます笑。優位点としては、array型もpack,unpackできることでしょうか!
世の中の流れは速い!これからはアウトプットを、MessagePackみたいに高速化していきたいですね!!
== 追記(2009.11.30 17:34) ==
GitHubに公開しました。ご指導ご鞭撻のほどよろしくお願いします!
http://github.com/hideyuki/messagepack-php-ext
August 5th, 2010 at 5:13 pm
以下の環境にて、インストールまでは成功したのですが、
・CentOS 5.5
・php 5.2.13
・Apache 2.2.3 or cli
実行時に、
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/modules/msgpack.so’ - /usr/lib64/php/modules/msgpack.so: undefined symbol: RETURN_NUL in Unknown on line 0
というエラーが出てしまい、使用することができませんでした…。