У меня довольно сложная многостраничная форма запроса.На самом деле, у моего сайта есть несколько запросов к различным наборам данных.Поскольку эти параметры запроса охватывают несколько запросов страниц, я полагаюсь на сеансы для хранения накопленных параметров запроса.Я обеспокоен тем, что данные, хранящиеся в сеансе, после сериализации могут превысить емкость хранилища MySQL BLOB (65 535 байт) столбца data
, указанного в документации по сеансу CodeIgniter :
CREATE TABLE IF NOT EXISTS `ci_sessions` (
`id` varchar(128) NOT NULL,
`ip_address` varchar(45) NOT NULL,
`timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
`data` blob NOT NULL,
KEY `ci_sessions_timestamp` (`timestamp`)
);
Как я могу сохранить введенные пользователем параметры запроса и быть уверенным, что они будут сохранены для данного пользователя?
Я подумал об использовании файлового кэширования кэшировать эти данные с помощью ключа, сгенерированного из идентификатора сеанса:
// controller method
public function my_page() {
// blah blah check POST for incoming query params and validate them
$validated_query_params = $this->input->post();
// session library is auto-loaded
// but apparently new session id generated every five mins by default?
$cache_key = "query_params_for_sess_id" . $this->session->session_id;
$this->load->driver('cache');
// cache for an hour
$this->cache->file->save($cache_key, $validated_query_params, 3600);
}
Однако я беспокоюсь, что идентификатор сеанса может измениться, когда для данного пользователя будет создан новый идентификатор сеанса.По-видимому, это происходит по умолчанию каждые пять минут , поскольку CodeIgniter генерирует новые идентификаторы сеанса для повышения безопасности.
Может кто-нибудь предложить проверенное (и эффективное!) Средство хранения данных сеанса, котороепревышает размер капли размером 64 КБ?