2016年2月4日木曜日

[cakephp 2.x] CakePHPのセッション管理をDBに変更する

まず、"cake_sessions"というテーブルを作るのだが shellが使える環境であれば app/Config/Schema/sessions.php にスクリプトがあるので
1
2
cd app/Console
cake schema create Sessions
とやればテーブルができる。 shellが使えないならばクリエイト文で作る。mysqlならば以下のようになる。
1
2
3
4
5
6
CREATE TABLE IF NOT EXISTS `cake_sessions` (
    `id` varchar(255) NOT NULL DEFAULT '',
    `data` text NOT NULL,
    `expires` int(11) DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
テーブルができたならば次はcare.phpの
1
2
3
Configure::write('Session', array(
    'defaults' => 'php'
));
1
2
3
4
5
6
7
8
9
10
11
Configure::write('Session', array(
    'defaults' => 'database',
    'cookie' => 'SID',
    'timeout' => 259200,
    'ini' => Array(
        'session.cookie_lifetime' => 2580000,
        'session.gc_maxlifetime' => 2580000,
        'session.gc_probability' => 1,
        'session.gc_divisor' => 100
    )
));
に変更する。 cakephp-2.7 だと200行目くらいにある。