[MovableType]mt_sessionテーブルのデータを調べてみた
mt_sessionテーブルの概要
mt_sessionテーブルには、さまざまな用途の一時データが保管されている。"session"という名前から、いわゆるPHPなどでいう「セッションデータ」が格納されているのかと思っていたが、そうではない。
mt_sessionテーブルの中には実に雑多な一時情報が格納されている。
「セッションデータ」というよりも「一時データ」と言う方が実態に近い。
mt_sessionテーブルの定義
mysql> desc mt_session;
+------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| session_data | mediumblob | YES | | NULL | |
| session_email | varchar(255) | YES | | NULL | |
| session_id | varchar(80) | NO | PRI | NULL | |
| session_kind | varchar(2) | YES | MUL | NULL | |
| session_name | varchar(255) | YES | MUL | NULL | |
| session_start | int(11) | NO | MUL | NULL | |
| session_duration | int(11) | YES | MUL | NULL | |
+------------------+--------------+------+-----+---------+-------+
一つづつ見ていこう。
sessino_data
データ本体である。内容は実にさまざまで、RSSフィードの中身が格納されていたり、ブログ記事のエントリが格納されていたり、タグリストが入っていたり、テンプレートデータが入っていたりする。
データは"SERG"という文字列で始まることが多い。特殊な方法でシリアライズされているようにも見える。
自動保存された記事も、"SERG"で始まるシリアライズデータとして保存されているようである。
sessino_id
1から振られる連番数値かと思いきや、そうではない。いろんな値が入っている。
"agFT5WXi0bcVlE2JPF2pDBCP1mbTX8hIBD"みたいなハッシュ値が入ってたり、
"autosave:user=1:type=entry:id=133:blog_id=5"みたいなのだったり、
"blog:13;datasource:entry"だったり、やりたい放題である。
恐らく、"autosave:user=1:type=entry:id=0:blog_id=5"のようにentry:id=0のものが、新規記事の自動保存データで、
"autosave:user=1:type=entry:id=435:blog_id=5"のようにentry:idが1以上のものが、既存記事の編集の際の自動保存データだと思われる。
→実際に確認してみたところ、確かにそうなっていました。
sessino_email
たいていNULLだが、ときどきブログユーザのメールアドレスが入っている。意味はよくわからない。
sessino_name
たいていNULLだが、ときどきブログユーザ名が入っている。意味はよくわからない。
sessino_start
これは、レコード作成日がUnixTimeとして格納されているものと思われる。いわゆる"created_on"と同じようなものである。
sessino_duration
たいていのレコードではNULL値が入っている。ときどきUnixTimeが入っている。
意味はよくわからない。
sessino_kind
アルファベット2文字の値が張っている。"AS", "CS", "SI", "UA" などいろいろある。
"AS"が、"autosave"すなわち「自動保存」を表していると思われる。
自動保存された記事を見つける方法
session_kindが"AS"で、session_idが"autosave:user=1:type=entry:id=0:blog_id=5"のようになっているレコードを抽出すれば、
そこのsession_dataに自動保存されて記事が格納されているようである。
カテゴリ:
MovableType