2013-01-23 60 views
1

我有一個似乎得到正確創建,在鍍鉻列爲爲什麼我的會話文件從我的tmp文件夾中刪除?

Created: Tuesday, January 22, 2013 4:17:01 PM 
Expires: Thursday, May 2, 2013 5:17:22 PM 

我看到在我的服務器上tmp文件夾會話文件cookie中,我可以關閉並重新打開瀏覽器,並保持但是,在幾小時不活動之後,會話文件似乎從tmp文件夾中被刪除。

我解決了以前的問題的進程被覆蓋掉了(會議文件仍然存在,但大小爲0字節),因爲通過jQuery函數調用的腳本不保存會話數據。但是,在這種情況下,會話文件消失。

我該如何解決這個問題?

回答

1

每個會話都有一個有限的生命週期。在此PHP壽命可以通過

設置
ini_set('session.gc_maxlifetime', seconds); 

session.gc_maxlifetime指定的後數據將被視爲「垃圾」和潛在清理的秒數。垃圾收集可能會在會話開始時發生(取決於session.gc_probability和session.gc_divisor)。

http://php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime

不要將其設置爲非常高的值(天或月) 如果要自動登錄的用戶,保存令牌到用戶的cookie,並創建一個新的會話時,舊的離開了。

可能需要閱讀本 Designing a secure auto login cookie system in PHP

Creating a secure login using sessions and cookies in PHP

+0

有趣。設置長ini.session.gc-maxlifetime的缺點是什麼?同樣,使用令牌的建議時,我的理解是,我會檢查,看看是否有一個活動的會話如果沒有,檢查令牌cookie,那麼對令牌/用戶名組合的表匹配這個標記(標記爲任意像'md5(uniqid('',true));'就像你的鏈接問題所建議的那樣)來重新填充會話數據。我的理解是否正確? – jela

+0

是的。你不應該單獨依賴會話的原因是它只創建臨時文件。會話不會在數天和數月內處於活動狀態。你會爲每個會話創建一個會話文件,如果你有足夠的流量,它可以很容易地爆炸你的服務器。在一個ext文件系統上,一個目錄中已經有10,000個文件顯着增加了隨機訪問的目錄查找 –

相關問題