クックパッド様と技術者交流会を行いました Mac 用の Google Japanese Input のアイコン
Nov 30

こんにちは。takei-hです。

ちょっと時間が経ってしまったのですが、アシアル株式会社KLab株式会社の合同勉強会でMessagePackとPHP Extensionについて発表しましたので、資料を公開します。



また、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

Trackback URL

One Response to “アシアルKLab合同勉強会で発表しました: MessagePackのPHP Extensionについて”

  1. akiyan Says:

    以下の環境にて、インストールまでは成功したのですが、

    ・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

    というエラーが出てしまい、使用することができませんでした…。

Leave a Reply