PHP の SQLite extension、CVS 版では SQLite 2.8.16 を使っているけど、5.0.5 では 2.8.14 のまま。*1
CVS をチェックアウトするときに更新されていたこともあって、何となく ext/sqlite を眺めていたら、面白いものを発見した。
sess_sqlite.c って、もしかして SQLite の組み込みセッションハンドラ?
ソースを流し読みしたら*2有効にする方法の見当がついたので、とりあえず試してみる。
使い方は簡単で、php.ini で
session.save_handler = sqlite session.save_path = /path/to/session.db
とするか、スクリプト中で session_start() する前に
session_module_name('sqlite'); session_save_path('/path/to/session.db');
とするだけ。
導入が簡単で、デフォルトのセッションハンドラと違ってファイルを作りまくらないのがいい。
SQLite の排他制御がどうなってるのかよく知らないけど、よほど瞬間アクセス数が多く無い限りは安心して使えると思う。
2年以上前から存在していたようだけど、マニュアルのどこにも書いてないから気付かなかったよ。
いやあ、いいもん見つけた。