Debian squeeze は問題ないのですが、Debian lenny ではすぐログアウト
する問題に悩まされていました。セッションが短いと、こうなるそうです。
/etc/cron.d/php5 を以下のように修正して解決しました。
修正前
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm
修正後
00 6 10,20,30 * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm
セッションの削除を毎時 9,39 分から、毎月 10,20,30 日の 6:00 に変更
しました。数十人くらいしか使わない環境なので、設定は適当です。
PHP のセッションは session.gc_divisor, session.gc_maxlifetime,
session.gc_probability が関係しているそうです。これは以下の cgi で
確認できます。
<?php phpinfo(); ?>
Debian Lenny はこのような設定でした。
session.gc_divisor | 100 |
session.gc_maxlifetime | 1440 |
session.gc_probability | 0 |
session.gc_probability/session.gc_divisor = 0/100 = 0
0 だと PHP からはセッションの削除はしないそうです。
結論
Debian Lenny は、cron が 30 分おきに PHP のセッションを削除する。
cron の設定を変えることで、これを制御できる。