[ステップアップ! CakePHP]セッションをデータベースに保存する
この前の日曜日に WOWOW でやってたラシャド・エバンス vs ランペイジ・ジャクソンの録画をまだ観られてなくてモンモンとしてる kimoto です。今日こそ帰って観るぞ!
さて、CakePHP 連載の第4回。本日はセッションの保存場所をデータベースにする方法をお話します。
なぜデータベースに入れるのか?
デフォルトでセッションを利用すると、その情報はファイルに記されます。
そのままでももちろん問題ないですが、例えば Web サーバが複数台あり、セッションを共有しなければならない時などは、「DB に保存する」というのが選択肢の一つとなります。
では設定方法をお話します。
CakePHP では設定も楽チン。
1.まずはコンフィグの書き換え
config ファイルの書き換えをします。
書き換えるファイルは「app/config/core.php」です。
[102行目あたり]
データベースで管理するように変更します。
Configure::write('Session.save', 'php');
↓このように
Configure::write('Session.save', 'database');
[110行目あたり]
保存するテーブル名を指定します。
//Configure::write('Session.table', 'cake_sessions');
↓このように
Configure::write('Session.table', 'cake_sessions');
[116行目あたり]
保存するテーブルのデータベースを指定します。
//Configure::write('Session.database', 'default');
↓このように
Configure::write('Session.database', 'default');
これで core.php の設定は完了です。
2.データベースの作成
次にデータベースに格納するためのテーブルを作成します。
フィールドは「id(データのID)」「data(データ本体)」「expires(有効期限)」の 3 つです。
CREATE TABLE cake_sessions (
id VARCHAR(255) NOT NULL default '' PRIMARY KEY,
data TEXT NOT NULL DEFAULT '',
expires INT DEFAULT NULL
);
core.php の110行目のテーブル名を変更している場合はこちらもそれに従う必要があります。
完了
これで、通常のセッションを同じく利用できるようになります。
参考になれば幸いです。