php のセッションにmemcached を使う
CentOSの場合
- install
rpmforgeのレポジトリが入っていない人は以下の手順で追加
# wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm # rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# yum install libevent memcached php-pecl-memcache
- 設定
/etc/php.ini を以下のように編集
session.save_handler = memcache session.save_path = "memcached.example.com:11211"
/etc/sysconfig/memcached を以下のように適当に編集する。
PORT="11211" USER="nobody" MAXCONN="1024" CACHESIZE="64" OPTIONS=""
- スタート
memcached デーモンをスタート
# chkconfig memcached on # service memcached start
Apacheをリスタート
# service httpd restart
- 各種設定
パケットキャプチャみると、各値の有効期限が、1440秒になっている。設定場所がわからない。
ソースを見てみると、
memcache_session.c: if (mmc_pool_store(pool, "set", sizeof("set")-1, key_tmp, key_tmp_len, 0, INI_INT("session.gc_maxlifetime"), val, vallen TSRMLS_CC)) {
session.gc_maxlifetime を使っているのが分かる。
これで、有効期限を設定できた。