重定向后丢失Codeigniter会话数据(使用memcached作为会话存储后)

时间:2016-10-09 07:43:34

标签: php codeigniter session memcached

我有一台服务器,其中包含许多使用CodeIgniter作为框架的PHP应用程序。一切都运行得很好。

但是,在使用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和错误应用程序之间识别/比较什么配置/文件以发现可能导致此异常的配置?

有什么想法吗?在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

显然我的一位同事在应用程序index.php上设置了超出memcache限制的指令,如下所示:

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

用适当的号码替换x(memcache只接受2,592,000或30天以下的号码),然后问题不再存在。