2011-02-08 137 views
1

我有一個問題,我的應用程序會話在大約15分鐘後意外過期。我需要他們在4小時後過期。PHP會話過期太早

服務器是Centos 5.5,PHP是5.3.2。

以下是我的代碼(包含在全局標題中)。

<?php 
session_name('MobileSuiteHQ'); 
if(!session_id()) { 
    session_start(); 
} 
ini_set('memory_limit', '512M'); 
ini_set('session.gc_maxlifetime', 14400000); 
ini_set('session.cookie_lifetime', 14400000); 
ini_set('session.gc_divisor', 1000); 
ini_set('session.use_cookies', 0); 
ini_set('max_execution_time', 300); 
ini_set('session.name','MobileSuiteHQ'); 
?> 

我的.htaccess文件包含:

php_value session.gc_maxlifetime 14400000 
php_value session.cookie_lifetime 14400000 
php_value session.use_cookies 0 
php_value session.gc_divisor 1000 

任何幫助或洞察力將不勝感激。

編輯:我無法登錄,當我更新我的.htaccess文件時,會話未啓動。所以我現在已經刪除:

php_value session.use_cookies 0 

它現在允許我登錄。

+0

Cookie是否與請求一起進入?會話在客戶端還是服務器端死了? – profitphp 2011-02-08 17:31:28

+0

但會話一般工作,對吧? – Gumbo 2011-02-08 17:31:47

+0

@profitphp:會話ID的Cookie被禁用(請參閱* session.use \ _cookies *)。 – Gumbo 2011-02-08 17:32:50

回答

3

初次檢查時,我會降低gc_maxlifetime和cookie_lifetime設置。我懷疑14400000對PHP來說有點高(理論上,32位操作系統應該可以達到2147483647,但這仍然是一個因素)。

如果你只需要4個小時的壽命,那麼14400將是一個完美的設置,並可能由於上述原因解決你的問題。

5

我不知道CentOS,但在Ubuntu上,php5軟件包會安裝一個/etc/cron.d/php5文件,它會在每小時9:和39時間內刪除'24小時內未觸及的'會話文件。所以你有最少24分鐘和最多54分鐘的會話。