メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2008年3月24日月曜日

[mod_chxj] memcacheを使ってみた。

ご要望があって、
クッキーシミュレート機能で、今までdbmに保存していたデータを、
memcachedに渡してあげるようにしてみた。

apr_memcacheを使っているせいか、とっても簡単。
apr_memcacheは0.7.0を使用してテストした。
configureが通らなかったんで、configure.acの33行目を


LIBTOOL="`${apr_config} --apr-libtoool`"
 



LIBTOOL="`${apr_config} --apr-libtool` --tag=CC"
 

として、

$ autogen.sh
$ ./configure --prefix=/usr 
$ make
 

でコンパイルした。


で、memcachedを使用するようにmod_chxjをコンパイルするには、
上記apr_memcacheをインストールしたとして、

$ ./configure --enable-memcache-cookie \
--with-apr-memcache-header=/usr/include/apr_memcache-0 \
--with-apr-memcache-lib-dir=/usr/lib
 

でconfigureしてmakeすればOK。
で、設定は、

ChxjCookieTimeout 30

ChxjCookieMemcacheHost "localhost"
ChxjCookieMemcachePort 11211
 

という感じ。

ついでにMySQL版もやってしまった。
で、こちらのconfigureは、

$ ./configure --enable-mysql-cookie \
--with-mysql-header=/usr/include/mysql \
--with-mysql-lib-dir=/usr/lib
 

として、make。
設定は、

ChxjCookieMysqlHost "localhost"
ChxjCookieMysqlPort 3306
ChxjCookieMysqlDatabase "test"
ChxjCookieMysqlUsername "roottest"
ChxjCookieMysqlPassword "pwtest"
ChxjCookieMysqlSocketPath "/tmp/mysql.sock"
ChxjCookieMysqlCharset "utf8"
ChxjCookieMysqlTablename "chxj_cookie"
ChxjCookieTimeout 30
 

な感じ。

いやいや、勉強になった。
.
--
残作業:
  • Fedora-8で確認【済】
  • CentOS 5.1で確認【済】
  • CentOS 4.6 x86_64で確認【済】
  • Debian sargeで確認(memcachedはデフォルトでは使用できない。)【済】
  • Debian etchで確認【済】
  • 今回はdebなし【済】
  • リリース(0.9.0)【済】
といったところ。
--
追記
apr_memcache0.7.0を使用する場合apr_memcacheにバグがあるため、
パッチを当てる必要がある。

2 コメント:

bayside さんのコメント...

さっそくビルドして使ってみました。バッチリ動いているようです。仕事速すぎです!どうもありがとうございました。

ただ、クッキーからのセッションの復元に微妙なところがあるので、アプリのせいかそうじゃないのかちょっと調査中です。

atkonn さんのコメント...

>さっそくビルドして使ってみました。

ありがとうございます!


>ただ、クッキーからのセッションの復元に微妙なところがあるので、アプリのせいかそうじゃないのかちょっと調査中です。
うーむ。。
それはCookie中のdomainやpath、expiresがらみでしょうか・・?
そのあたりは、急ぎで今実装中でございます。。。すみません・・。
こちらでももう少しいろいろとやってみます。。