Сохранение сессии в течение такого долгого времени может быть плохой идеей - данные неактивных сеансов будут потреблять ресурсы вашего сервера и могут замедлять некоторые операции. В Yii есть специальная функция для таких случаев - вы можете установить $enableAutoLogin
на true
:
'user' => [
'enableAutoLogin' => true,
// ...
],
И на login()
установить тайм-аут вызова для файла cookie идентификации:
[ 111]
Он установит специальный cookie-файл (действительный в течение года) с идентификационной информацией, который автоматически авторизует пользователя по истечении срока его сеанса. Таким образом, вам не нужно хранить данные сеанса на вашем сервере в течение года, но с точки зрения пользователя похоже, что он всегда входит в систему (даже если в фоновом режиме создается новый сеанс).
Лично я был бы
Надеюсь, это поможет.
P.S. Будьте тщательным использованием метода ReadString, оно предполагает, что строка предварительно ожидается с пользовательскими целыми числами на 7 битов т.е. что оно было записано классом BinaryWriter. Следующее из этого сообщения CodeGuru
Класс BinaryWriter имеет два метода для записи строк: перегруженная Запись () метод и WriteString () метод. Бывшие записи строка как поток байтов согласно кодированию класса используют. WriteString () метод также использует указанное кодирование, но это префиксы поток строки байтов с фактической длиной строки. Такие снабженные префиксом строки читаются назад на пути BinaryReader. ReadString ().
Интересная вещь о длине оценивает его, что как можно меньше байтов используется для содержания этого размера, она хранится как тип, названный 7-разрядным закодированным целым числом. Если длина помещается в байт 7 битов за сингл, используется, если это больше, чем это затем, верхний уровень обдумал первый байт, установлен, и второй байт создается путем смещения значения на 7 битов. Это повторяется с последовательными байтами, пока нет достаточно байтов для содержания значения. Этот механизм используется, чтобы удостовериться, что длина не становится значительной частью размера, поднятого сериализированной строкой. BinaryWriter и BinaryReader имеют методы, чтобы считать и записать 7-разрядные закодированные целые числа, но они защищены и таким образом, можно использовать их, только если Вы происходите из этих классов.
Я пошел бы со снабженными префиксом длину строками. Это сделает Вашу жизнь намного более простой, и это означает, что можно представить строки с разрывами строки в. Несколько комментариев к Вашему коду, хотя: