[Memcached] session save handler に memcached を利用する

memcached をインストールして php.ini の設定をすれば良い。

memcachedのインストールはこんな感じ(CentOS 6)。
ついでにPECLもインストールしておく。


wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure
make
make install
/sbin/ldconfig
pecl install memcached

php.ini に 以下の設定をするだけ


session.save_handler = memcached
session.save_path = "remotehost:11211"

※ PECL Memcachedも使うなら extension=memcached.so も php.ini に追記

ロードバランサ配下だったりするとユーザーセッションの共通化で悩む。
NFSはやや大げさだし、AWSでは冗長化しにくいので使いづらい。
DBはたかがセッション程度でも負荷にしたくないし、ということでMemcachedを選択。

ちなみにMemcacheとMemcachedがある。
どちらが良いかなどはあまり調査していない。

設定時にちょっと詰まった。

Warning: session_start(): Write of lock failed
Warning: session_start(): Unable to clear session lock record

というエラーが出ていて、これは save_handler が memcached なのに session.save_path に tcp://~ の記述をしてしまっていたから。


session.save_handler = memcached
session.save_path = "tcp://remotehost:11211"

はNG。これは memcache のときの書き方らしい

カテゴリー: WordPress   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です