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

Codeigniter session data lost after redirect (after using memcached as session storage)

我有一个服务器,其中有许多 PHP 应用程序使用 CodeIgniter 作为框架。一切都运行完美。

但是,在使用 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) { }

但是在同一台服务器上的其他应用程序中,当我进行调试时,会话数据显示完美。

我使用模板构建了这些应用程序,这意味着所有配置大部分都是相同的,所以 config/file 我需要在正常和错误应用程序之间查看 identify/compare 什么来发现配置这可能会导致这种异常?

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

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

显然我的一位同事在超出内存缓存限制的应用程序中对 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替换为合适的数字(memcache只接受2,592,000或30天以下的数字),则问题不再存在。