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/データ/タイムスタンプに使用するカラム名を設定する。