sess_sqlite

PHPSQLite 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年以上前から存在していたようだけど、マニュアルのどこにも書いてないから気付かなかったよ。
いやあ、いいもん見つけた。

*1:PDO_SQLite は 3.2.5

*2:そもそもCをまともに読み書きできないから流し読みしかできない