2016-10-09 32 views
1

我有一臺服務器,其中包含許多使用CodeIgniter作爲框架的PHP應用程序。一切都運行完美。Codeigniter會話數據在重定向後丟失(使用memcached作爲會話存儲之後)

但是,在使用Memcached作爲會話存儲(我之前使用默認文件存儲會話)後,其中一個應用程序出現了奇怪的反應。在其他人運行良好的情況下,重定向到主頁後,我的應用程序的會話很少丟失。

對於調試,我用的語句是這樣

class Home extends CI_Controller { 

    public function __construct() 
    { 
      parent::__construct(); 
      // Your own constructor code 

      var_dump($_SESSION); die; 

      $this->mysession->check_no_session(); 
      $this->mysession->check_session_expires(); 
    } 

    public function index() 
    { 
      $this->libs->check_main_template('welcome_message',''); 
    } 
} 

轉儲顯示我存儲在會話什麼:array(0) { }

但我在同一個服務器上的其他應用程序,當我做調試,會話數據完美顯示。

我使用模板構建了這些應用程序,這意味着所有的配置大多都是相同的,所以我必須查看哪些配置/文件才能識別/比較OK和錯誤應用程序,以發現可能導致此異常的配置?

有什麼想法?先謝謝您的幫助。

+0

http://www.codeigniter.com/user_guide/libraries/sessions.html – user4419336

+0

請注意,同一臺服務器上的其他應用程序(使用相同的php.ini配置)運行良好,所以我認爲會話配置不是這個問題的原因,謝謝... –

回答

0

好吧,我想我找到了根本原因。

我的同事顯然之一超出內存緩存的限制,像這樣的應用程序設置一個指令上index.php

define('SESSION_TIME_OUT', x); 
ini_set('session.gc_maxlifetime', SESSION_TIME_OUT); 
ini_set('session.cache_expire', SESSION_TIME_OUT); 
session_start(); 

更換x有適當數量(內存緩存只接受在2,592,000或30天數),那麼問題不再存在。