Нашлось вот такое решение, надеюсь кому то будет это полезным! В классе «Session\DB», где и происходит формирование запроса, в методе «read» есть следующая запись: system/library/db.php
$query = $this->db->query("SELECT `data` FROM `" . DB_PREFIX . "session` WHERE session_id = '" . $this->db->escape($session_id) . "' AND expire > " . (int)time());
Здесь есть условие, в котором сравнивается значение поля «expire» с текущим временем.И если время хранения данных сессии истекло, то есть, если значение «expire» меньше текущего времени, то должен вернуться пустой массив данных.Но поле «expire» имеет тип datetime, а (int)time() возвращает количество секунд в виде числа.И похоже, что разные типы сравниваются некорректно, и при таком условии, запись всегда находится и всегда возвращается заполненный массив (конечно если совпадает "session_id").Если же изменить вышеприведенную строку кода, по аналогии с тем, как это записано в методе «write» этого же класса, таким образом:
$query = $this->db->query("SELECT `data` FROM `" . DB_PREFIX . "session` WHERE session_id = '" . $this->db->escape($session_id) . "' AND expire > '" . $this->db->escape(date('Y-m-d H:i:s',time())) . "'");
То после такого изменения кода все начинает работать правильно.В этом классе значение переменной «expire», определяющей период хранения сессии, берется из ini файла:
$this->expire = ini_get('session.gc_maxlifetime');
Значение у меня равно - 1440 секунд.И теперь, после исправления, до истечения этого периода возвращается заполненный массив, а после истечения - пустой.