2009-10-26 63 views
0

是否可以配置PHP會話永不過期?我目前在php.ini中設置了默認的24分鐘 - 我可以將這個時間縮短到幾周或類似的東西,但我想知道我是否可以將它們設置爲無限生命?PHP中的永久會話

我要實現對#1的類似的效果:我從來沒有在這裏登錄。這是通過一個永不過期的會議或其他方式實現的嗎?

另外,作爲第二個問題:過期的會話文件如何清理?如果有人創建了一個會話並且從不返回,哪個進程正在清理其過期文件?

回答

8

通常情況下,這似乎是一個永恆的會話是兩件事情:一個會話,它很快到期,幷包含自動登錄令牌很長的壽命的cookie。

有包含在此的StackOverflow問題上的會話和記錄,在一個偉大的一系列反應:The Definitive Guide To Website Authentication

關於你提到的有關會話時被清理的問題,也有控制幾個php.ini settings當垃圾收集會話被觸發。

1

由於PHP都允許並鼓勵你創建你自己的會話數據存儲處理程序,不存在唯一正確的回答這個問題。

1

回答到次級問題

會話文件清理由以下3 php.ini設置控制:

  • session.gc_probability合(默認值爲1)
  • session.gc_divisor(默認值100 )
  • 的session.gc_maxlifetime(指定之後,會話被視爲垃圾歲)

前2個設置指定的垃圾收集過程的概率在會話開始正在啓動(之前或在你的腳本執行的開始,這取決於你如何設置的東西了)

在默認配置有那麼發生這種情況的概率爲1%。如果是,則清理比maxlifetime早的文件。

關於你提到的第一個問題 - 爲什麼不寫自定義會話處理程序,數據庫存儲內部會話(如果有的話)。這樣,您就可以在數據庫中查看和控制會話。方便:)