mysqlでセッションを使うメモ

symfonyでセッション管理をファイルベースからMysqlを使うようにしたいので調べたら一応標準で用意されてるっぽいので使ってみる。


まずDBにテーブルを作る。
ソース見た感しではセッションIDと格納するデータ、タイムスタンプが必要そうなのでschema.ymlに書く。

セッションIDは32文字の英数字、データはシリアライズされた値、タイムスタンプはUNIXタイムスタンプなので以下のような感じ。

propel:
  session:
    _attributes:  { phpName: Session }
    id:           { type: varchar(32),  primaryKey: true, required: true }
    data:         { type: longvarchar }
    updated_at:   { type: integer }

・・・別にpropelで作る必要は無いけどまぁ楽なので。

schema.ymlを書き換えたら「symfony propel-build-all」してDBのイニシャライズをしておく。


次に、「app/config/factories.yml」にmysqlを使うようにクラスの設定を書く。

all:
  storage:
    class:  sfMySQLSessionStorage
    param:
      db_table:     session
      db_id_col:    id
      db_data_col:  data
      db_time_col:  updated_at
      database:     propel

storageにsfMySQLSessionStorageクラス(実体は「PHPLIB/symfony/storage/sfMySQLSessionStorage.class.php」)を使うように設定し、
パラメータにはそれぞれ、テーブル名、ID/データ/タイムスタンプに使用するカラム名を設定する。

あとは「symfony cc」して普通にセッション使えばMysqlを使ってくれる模様。簡単。