セッションファイルの削除
mixiでみつけたサンプル。CGI::Session使う上では必要だろう。
- CGI::Session のドライバにFile, IDジェネレータに MD5 を利用している前提です。
- 他のドライバや、IDジェネレータを使っている場合は書き換える必要があります。
- $sessdirの設定は適宜書き換えてください。
- unlinkに失敗したときのフォローがないのでその辺が気になれば加えてください。
※2008-01-26、コメントで指摘を受けて、明確なエラーを修正。シミケイさん、ありがとうございました。
#!/usr/bin/perl use strict; use warnings; # セッションファイルを置いているディレクトリを指定 my $sessdir = '/home/userdir/sessdir'; opendir(SESSDIR, $sessdir); while (my $sess = readdir(SESSDIR)) { if ($sess =~ /^cgisess_[0-9a-f]{32}$/) { my $file = qq|$sessdir/$sess|; my $days = -M $file; # 最終更新から1日以上経っているセッションファイルを削除 # 1日より短く指定したい場合は小数点でもOK $days > 1 and unlink $file; } } closedir(SESSDIR); exit;