MessagePackを使おう!
ということになりまして。
MessagePackはシリアライズのスピード、シリアライズ後のサイズの縮小に優れているシリアライザーです。
詳しくは
google:MessagePack
で漁って見てください。手抜きなう。
CとRubyのライブラリとして開発されている人のことで、phpにバインディングしなきゃいけないのかー、さっぱりわからないなーと思っていたら既に作られていました。
素敵!
http://redmine.msgpack.org/projects/msgpack/wiki/QuickStartPHP:QuickStartを見ると
$ git clone git@github.com:msgpack/msgpack.git $ cd msgpack/php $ phpize $ ./configure $ make $ make install
これだけ!
ですが色々うまくいかなかったので、色々踏んだ手順を書いて行こうと思います。
はまったポイント
- phpizeが入ってない
- git clone git@github.com:msgpack/msgpack.gitでエラー(別の場所)
- CentOSでデフォルトで入るphpのバージョンが5.1.6(5.2以上でないと駄目)
- そもそもmsgpack.cが間違ってる(Warning: PHP Startup: Unable to load dynamic library 'modules/msgpack.so' - modules/msgpack.so: undefined symbol: RETURN_NUL in Unknown on line 0 )
4については次の記事で書きます。
0. 環境
CentOS 5.5
PHP 5.1.6
apache 2.2.3
1. phpizeが入ってない
yum install php-devel
解決。
2. git clone git@github.com:msgpack/msgpack.git
とりあえず書いてある通りに実行してみると
Permission denied (publickey). fatal: The remote end hung up unexpectedly
エラー。
git clone http://github.com/msgpack/msgpack.git
もしくは
git clone http://github.com/hideyuki/messagepack-php-ext.git
上の方が公式ですね。下の方は制作者の方のもののようです。
サンプル通りにやりたいのであれば上の法で。
3. CentOSでデフォルトで入るphpのバージョンが5.1.6(5.2以上でないと駄目)
古いですねCentOS。てっきり5.2系が入ってるものだとばっかり思ってました。良くないですね。
こちらを参考にphp5.2.*を入れてください。
http://blog.livedoor.jp/kuroranger/archives/65182380.html:つれづれなる備忘録 : CentOS5.2にPHP5.2をYumでインストール
修正後の環境
CentOS 5.5
PHP 5.2.13
apache 2.2.3
とりあえずコレでphpize, ./configure, make, make installができます。
その後php.iniやphp.d/msgpack.iniでextension=msgpack.soって記述してphpを実行するとエラーがでました。(2010/09/08現在)
それについては次の記事で。