CodeIgniter 3 为每个请求生成一个会话文件,为什么?

Sil*_*Sil 5 php codeigniter

我使用 CodeIgniter (v3.1.11) 作为我的 web 应用程序和文件作为 session_driver。

会话库是这样自动加载和配置的

$config['sess_driver']                  = 'files';
$config['sess_cookie_name']             = 'ci_session';
$config['sess_expiration']              = 21600;
$config['sess_use_database']            = false;
$config['sess_table_name']              = 'ci_sessions';
$config['sess_match_ip']                = false;
$config['sess_time_to_update']          = 300;
$config['sess_save_path']               = APPPATH . "cache/sessions/";
Run Code Online (Sandbox Code Playgroud)

当我登录时,我在会话对象中设置了我的用户信息并使用$this->session->set_userdata($myData) 它创建了相应的会话文件,其中包含我需要的信息

user@:~/path/to/application/cache/sessions$ sudo cat ci_sessionb69ca97bce23674e94809941346fae7300c4afaa
username|s:9:"user";id|i:2;logged_in|b:1;language|s:2:"EN";
Run Code Online (Sandbox Code Playgroud)

但是当我的前端请求 CodeIgniter 控制器时,会为每个包含空数据的请求创建一个新的会话文件,我最终无法检索存储在初始会话文件中的数据。

user@:~/path/to/application/cache/sessions$ sudo cat ci_sessiondcdd28185aa2f7c9a4f83841193e8c826399abc5
__ci_last_regenerate|i:1603286120;
Run Code Online (Sandbox Code Playgroud)

什么可能使这种情况发生?

小智 0

设置$config['sess_time_to_update'] = 0;$config['sess_time_to_update'] = $config['sess_expiration'];

此选项控制会话类重新生成自身并创建新会话 ID 的频率。将其设置为 0 将禁用会话 ID 重新生成。