edo1z blog

プログラミングなどに関するブログです

cakePHP SessionをDB+memcachedにしてみる

セッションをmemcached+DBというコンボセッションにしたいと思います。コンボセッションというのはここに書いてあるからそういう風にいうのかなと思いました。 http://book.cakephp.org/2.0/ja/development/sessions.html

上記ではAPCが使われていますが、APCの変わりにmemcachedを使ってみようと思います。APCはmemcachedより速いけどapache再起動したら消えてしまうとどこかに書いてありました。memcachedもmemcached再起動したら消えるし、速い方がいいのかなとも思いますが、まあどっちでもいいかと思いました。

今キャッシュのdefaultもmemcachedになっております。

まず、core.phpでセッションのdefaultをdatabaseにします。engineをComboSessionというのにしておいて、cacheはdefaultにします。

Configure::write('Session', array(
    'defaults' => 'database',
    'handler' => array(
        'engine' => 'ComboSession',
        'model' => 'Session',
        'cache' => 'default'
    )
));

次に、ComboSessionをつくります。上記のcakePHPのcookbookに書いてあるコードをコピペします。

次に、データベースにsession用のテーブルをつくります。app/Config/Schema/sessions.sqlを使って、sessionsテーブルをつくってSessionモデルをつくったらできました。