最近、インフルエンザの予防接種を受けたKeitaです。
ずいぶん前にですが、PHPからTokyoTyrantをネイティブに操作するライブラリをopenpearにてリリースしたので、簡単に紹介したいと思います。
Net_TokyoTyrantとは?
PurePHPで書かれた、TokyoTyrantのネイティブなインターフェースを叩くライブラリです。memcache互換のインターフェースなどとは違い、TokyoTyrantのLUA拡張などTokyoTyrant本来の機能をほぼすべて使えるというのが特徴です。
インストール
PEARライブラリとして公開されているので非常に簡単にインストール可能です。openpearのチャンネルを追加します。
pear channel-discover openpear.org
PEARコマンドでインストールを行います。
pear install openpear/Net_TokyoTyrant
サンプルコード
概ねですが下記のような感じで利用できると思います。関数などは、TokyoTyrantの本家ページにあるものすべてをサポートしています。
require_once 'Net/TokyoTyrant.php'; $tt = new Net_TokyoTyrant(); $tt->connect('localhost', 1978); //接続 $tt->put('oyomesan', 'nounai'); var_dump($tt->get('oyomesan')); $tt->put('kanozyo', 'pc no naka'); $tt->put('kareshi', 'otoko ha chotto'); var_dump($tt->mget(array('oyomesan', 'kanozyo'))); var_dump($tt->fwmkeys('ka', 100)); //kanozyo, kareshiが返ってくる $tt->close() //切断
作成した経緯
当初、memcachedのインターフェースからTokyoTyrantを操作していたのですが、PHPのmemcache拡張は、複数の値を一括して取得するmgetや情報取得用の機能がないため、ついカッとなって一晩で作りました。※今では、gree labsさんで公開されているlibmemcached用のインターフェースなどに備わっているので、memcachedをPHPから使うという場合限っては他の言語と同様に、PHPはまったく機能が不足しているといことはありません。
テストコードを書いたので休日のストレス解消に時々リファクタをしていますがほとんどインターフェースは変わってません。
今後について
以下をやってみたいなーとおもってます。- コメントをまったく書いてないのでコメントを書く
- 例外周りの実装が美しくないので直す
- TokyoTyrantが64bit整数を返してくるものがあるがそこらへんの扱いをPHPでどうするか考えてないので考える
- 実践投入してみる
もしくはopenpearの設定で登録してあれば修正できるようになっているので誰かが修正してくれたらなーともおもっています。
また、ベンチマークコードも、oepanpearにて公開しているのでそこらへんの調査もきっちりできればなーというか誰かしてくれないかなぁなどと思っております。
最後に
Net_TokyoTyrantは、id:riafさんとid:sotarokさんが作られている、openpearにて公開されています。実際に利用してみるとわかりますが、初めてでも1時間程度で、pearとして自分のライブラリを公開することができます。 なおかつsvnなどの面倒も見てくれるので個人でものを作るには非常に便利な環境です。
このサイト自体が、PHPフレームワーク(正確にはPHP libraries & Setup Framework)rhacoで書かれておりここらへんの話だけでも興味深いサイトといえると思います。
誰かのライブラリが公開されたら実際に使ってみて本ブログや個人のブログでご紹介というか他人のふんどしで相撲とらせていただこうかと思います。
長々と書きましたが要するにopenpearの宣伝をして皆さんのライブラリが公開されればいいな!というエントリでございました。ご参考になれば幸いです。