Есть ли какая-либо известная ошибка в библиотеке сеансов CodeIgniter 2.1.0? Почему меня выгоняют?

Я работаю над сайтом, созданным с помощью CodeIgniter 2.1.0.

Я иногда замечал, когда я перезагружаю страницу пару раз или открываю пару страниц очень быстро или когда у меня есть ошибка в коде (эти ошибки не связаны с сеансами). Я выхожу из системы.

Этот сайт использует библиотеку Ion_authand для идентификации:

public function logged_in() { $identity = $this->ci->config->item('identity', 'ion_auth'); return (bool) $this->ci->session->userdata($identity); } 

Есть ли ошибка или что-то, о чем я должен знать?

 $config['sess_cookie_name'] = 'cisession'; $config['sess_expiration'] = 7200; $config['sess_expire_on_close'] = TRUE; $config['sess_encrypt_cookie'] = FALSE; $config['sess_use_database'] = TRUE; $config['sess_table_name'] = 'cisession'; $config['sess_match_ip'] = FALSE; $config['sess_match_useragent'] = TRUE; $config['sess_time_to_update'] = 300; 

На этом сайте сеансы обновляются практически на каждой странице.

Вот что я нашел:

В библиотеке сеансов CodeIgniter есть ошибка, которая быстро разрушает сеанс.

Здесь вы можете найти больше об этой ошибке:

 https://github.com/EllisLab/CodeIgniter/issues/154 

Эта ошибка все еще существует в последней стабильной версии 2.1.3.

Я исправил это, заменив мою библиотеку сеансов на одну из CI3-DEV от GitHub:

 https://github.com/EllisLab/CodeIgniter/blob/b211adee89f5fd2192051e9c0826146bd150f469/system/libraries/Session.php 

И добавив длинную sess_expiration и sess_time_to_update в мою конфигурацию … мои 86400 и 86500.

CodeIgniter сохраняет данные сеанса в файлах cookie. Если данные сеанса имеют специальный символ, который отключает куки-файл, сеанс также уничтожается.

Это также создает еще несколько проблем с ограничением размера. Cookie может сохранять ограниченный размер данных в зависимости от браузера. Если вы попытаетесь сохранить больше данных в сеансе CodeIgniter и как CodeIgniter попытается сохранить его в cookie, он может не сэкономить больше этого предела.

Кроме того, поскольку cookie отправляется по сети, он излишне добавляет трафик в сети. Все данные сеанса не должны сохраняться в файле cookie.

Лучше использовать собственную библиотеку сеансов. Он использует собственный сеанс PHP.

https://github.com/EllisLab/CodeIgniter/wiki/Native-session

или

https://github.com/EllisLab/CodeIgniter/wiki/PHPSession

Вы можете сравнить оба.

Пожалуйста, обратитесь к документации сессии CodeIgniter о том, как CodeIgniter хранит данные сеанса.

http://ellislab.com/codeigniter/user-guide/libraries/sessions.html