どうも・・・自分のサイトにログインしてると、次の日とかになるとセッションが消えてしまうという現象に遭遇した。
セッションのexpireは2週間に設定しているし、FireFoxでCookieを確認してみても有効期限は2週間加算された日付になっていて問題はない。
ここ数日、自分のサイトでYakiBikiを使い始めて初めて遭遇したのだけれど、確実に再現できる方法が分からない。
ローカルでテストしている環境ではずーっとセッションCookieが持続していたのに。
で、いろいろローカルとサイト(レンタルサーバ)のsession関連の設定値を見比べていたら、session.gc_divisorがローカルは1000になっていたが、レンタルサーバは100になっていた。
あとsession.gc_maxlifetimeがローカル・レンタルサーバとも1440になっていた。
で、試しにレンタルサーバの方の session.gc_maxlifetime をセッションCookieのexpireに合わせて2週間の秒数にしてみたところ・・・どうにか維持できているっぽい。
なんだけれど、これやってしまうとguestユーザ相当に発行したセッションデータファイルが大量に残留してしまう。gc_divisorの頻度をいくら上げても、2週間経過したファイルでないと削除されないので。
弱った。
こうなったらXhwlayのBookmarkのGCと同じように、自前で session.save_handler を実装した方が良いかもしれない。発生頻度は1/20位にして、但しguest相当のセッションは有効期限に関係なく削除する、みたいにしないとディスクの無駄使いになる。
当面は session.gc_maxlifetime を24時間程度にして、YakiBikiの方の _YB('session.lifetime') には0を設定してブラウザを閉じるまでにしておくべきか。元々この前身となったPHPスクリプトでも、セッションはブラウザを閉じるまでにしておいて、一度ブラウザウインドウでログインしたら使い終わるまで(= PCの電源OFFるかブラウザが重たくなりすぎりか)開きっぱなしにする使い方をしていた。うーん。
コメント