Сессии CI - это, по сути, файлы cookie. Зашифровано, но куки тем не менее. Вот почему предпочтительнее хранить сеанс в базе данных, потому что вы (предположительно) имеете дело с менее недостижимой целью от атак, особенно если вы используете Active Records, которые автоматически экранируют ваши запросы (чтобы избежать инъекций SQL).
Кроме того, в отличие от файлов cookie, БД не имеет такого ограниченного объема доступной памяти, поэтому вы можете хранить там любое количество данных, которое вам нужно, кэшировать операции и скрывать их от внешнего интерфейса.
Я не уверен, почему это требуется, за исключением того факта, что некоторые данные сессий автоматически шифруются CI. Таким образом, даже если вы не используете библиотеку Encryption, некоторое шифрование все равно выполняется (например, при сохранении идентификатора сеанса). Как правильно заметил Кай Цин, вам не нужно расшифровывать данные, уже обработанные CI.
$this->session->sess_destroy()
просто удаляет данные, сохраненные как сеансы. Будучи также куки-файлами, чтобы удалить весь контент, вам нужно использовать специальные функции (например, обратитесь к помощнику куки-файлов). Имейте в виду, однако, что при вызове этой функции вы также удаляете флеш-сообщения (так как они являются сеансами), поэтому, если вы просто хотите удалить некоторые элементы, используйте unset_userdata($item)
.
Также не прекращается загрузка библиотеки. Что касается любой другой библиотеки, или класса, или контроллера, или чего-то еще, все перезагружается с нуля после каждого запроса. Каждый раз, когда вы делаете запрос, скрипты запускаются, все заново инициализируются, а когда скрипт заканчивается, все теряется, как слезы под дождем. Это обычный срок службы PHP-скрипта. Если ваш сценарий не обязательно завершится после того, как вы вызовете session-> sess_destroy (), библиотека сеанса все равно будет загружена, хотя данные будут удалены.