2016-09-14 73 views
0

我已經讓Redis爲通過PHPRedis訪問的幾個子域運行共享會話存儲。會話cookie的壽命很長,所以用戶不必經常登錄,但是我發現我必須每半小時登錄一次。設置在PHPRedis會話上過期

檢查Redis實例顯示,默認情況下(約1500秒)每個密鑰的TTL設置很低。 PHPRedis文檔有這樣的說法:

會話具有以秒爲單位表示的生命週期並存儲在INI變量「session.gc_maxlifetime」中。你可以用ini_set()改變它。

目前還不清楚這是指Cookie生存時間還是Redis密鑰的TTL。我將session.cookie_lifetimesession.gc_maxlifetime都設置爲100000秒來運行測試,但看起來新會話條目仍然以Redis中的1500秒TTL開始。

很明顯,如何直接與Redis交互時設置TTL,但我不知道如何通過PHPRedis的會話管理器設置此值。有小費嗎?

+1

您確定phpredis會話處理程序獲取您的新session.gc_maxlifetime嗎? (你是否將它設置爲.ini文件,或通過代碼,如果通過.ini,然後你重新加載配置,如果通過代碼,然後你設置新的值後開始會話) –

+0

我在會話之前使用'ini_set()'開始。我將檢查更改.ini文件是否有任何不同。 – aurath

+0

這樣做的好處是,通過'ini_set()'設置它不可行,因爲現在我必須在每臺服務器上進行php.ini更改,而不是讓源代碼爲我做。 – aurath

回答

1

吻網是正確的,無論出於何種原因ini_set('session.gc_maxlifetime', 100000);不工作,但更改php.ini中的設置做了伎倆。