[ステップアップ! CakePHP]セッションをデータベースに保存する

No Photo

イメージ

この前の日曜日に 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行目のテーブル名を変更している場合はこちらもそれに従う必要があります。

完了

これで、通常のセッションを同じく利用できるようになります。
参考になれば幸いです。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ