2016-08-22 29 views
1

我正在使用CakePHP 2.4.3,現在它在大約30分鐘處於不活動狀態後將我註銷。我希望會話持續更長時間(或者像Facebook這樣的無限可能)即使我離開網站(不關閉瀏覽器)幾個小時左右。如何使CakePHP中的會話無限(或者至少更長時間,即使在非活動狀態下)?

我試過的這些工作過下面的應用程序/配置/ core.php中,但沒有:

測試#1:

Configure::write('Session', array(
     'defaults' => 'php', 
     'timeout' => 60, // The session will timeout after 60 minutes of inactivity 
     'cookieTimeout' => 4320, // The session cookie will live for at most 3 days, this does not effect session timeouts 
     'checkAgent' => false, 
     'autoRegenerate' => true, // causes the session expiration time to reset on each page load 
    )); 

測試#2:

Configure::write('Session', array(
     'defaults' => 'php', 
     'timeout' => 2160, // 36 hours 
     'ini' => array(
      'session.gc_maxlifetime' => 129600 // 36 hours 
     ) 
    )); 

測試#3:

Configure::write('Session', array(
      'defaults' => 'php', 
      'cookieTimeout' => 0 
    )); 
Configure::write('Security.level', 'medium'); 

我不確定當cakephp網站上的腳本本身不起作用時(測試2),現在發生了什麼事情。我登錄後,檢查其他網站,然後在一小時後回到網站,然後註銷。如何使CakePHP中的會話無限(或者至少更長時間,即使在非活動狀態下)?

+0

請記住,PHP會在超時達到之前刷新會話。這可能發生在共享主機和大量流量上。我通常使用自己的目錄來存儲會話:'session_save_path('/ path/to/www/session.collection')'。您必須自己清理它們(例如,使用cron作業) –

回答

0

把這個在你的後過濾行動的AppController:

$這個 - >會話級>更新();

這會將會話cookie更新爲無限。

否則,你試試下面的代碼,

'Session' => [ 
     'defaults' => 'database', 
     'timeout'=>2441, 

    ], 

添加超時按您的要求。

使用會話數據庫,創建一個會話表,它將存儲會話

可能它會幫助你

+0

afterFilter在控制器操作運行並呈現後調用,因此如果我暫時不使用站點(沒有控制器運行),則會話將不會更新還是對的?並且在我幾個小時後回來時最終也會過期。 – Leah

0

將這個下面的代碼到你的項目文件core.php中

Configure::write('Session', array(
    'defaults' => 'php', 
    'timeout' => 30000, // The session will timeout after 30 minutes of inactivity 
    'cookieTimeout' => 1440, // The session cookie will live for at most 24 hours, this does not effect session timeouts 
    'checkAgent' => false, 
    'autoRegenerate' => true, // causes the session expiration time to reset on each page load 
)); 
+0

這與我的測試#1不一樣嗎? – Leah

相關問題