Класс yii\web\DbSession
| Наследование | yii\web\DbSession » yii\web\MultiFieldSession » yii\web\Session » yii\base\Component » yii\base\Object |
|---|---|
| Реализует | ArrayAccess, Countable, IteratorAggregate, yii\base\Configurable |
| Доступна с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/web/DbSession.php |
DbSession расширяет yii\web\Session, используя базу данных в качестве хранилища данных сессии.
По умолчанию DbSession хранит данные сессии в таблице базы данных с именем 'session'. Эта таблица должна быть предварительно создана. Имя таблицы можно изменить, установив $sessionTable.
Следующий пример демонстрирует, как настроить приложение для использования DbSession: Добавьте следующее в конфигурацию вашего приложения под components:
'session' => [
'class' => 'yii\web\DbSession',
// 'db' => 'mydb',
// 'sessionTable' => 'my_session',
]
DbSession расширяет yii\web\MultiFieldSession, поэтому позволяет сохранять дополнительные поля в таблице $sessionTable. Для получения дополнительной информации обратитесь к yii\web\MultiFieldSession.
Публичные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $allFlashes | массив | Сообщения всплывающих подсказок (ключ => сообщение или ключ => [сообщение1, сообщение2]). | yii\web\Session |
| $behaviors | yii\base\Behavior[] | Список присоединенных к этому компоненту поведений | yii\base\Component |
| $cookieParams | массив | Параметры cookie сессии. | yii\web\Session |
| $count | целое число | Количество переменных сессии | yii\web\Session |
| $db | yii\db\Connection|массив|строка | Объект подключения к базе данных или идентификатор компонента приложения подключения к базе данных. | yii\web\DbSession |
| $flash | строка | Ключ, идентифицирующий сообщение всплывающей подсказки. | yii\web\Session |
| $flashParam | строка | Имя переменной сессии, хранящей данные всплывающей подсказки. | yii\web\Session |
| $gCProbability | число с плавающей точкой | Вероятность (в процентах) того, что процесс GC (уборка мусора) будет запущен при каждом инициализации сессии, по умолчанию равна 1, что означает 1% вероятность. | yii\web\Session |
| $handler | SessionHandlerInterface|массив | Объект, реализующий SessionHandlerInterface, или массив конфигурации. | yii\web\Session |
| $hasSessionId | булево значение | Является ли текущий запрос отправил идентификатор сессии. | yii\web\Session |
| $id | строка | Текущий идентификатор сессии | yii\web\Session |
| $isActive | булево значение | Начата ли сессия | yii\web\Session |
| $iterator | yii\web\SessionIterator | Итератор для обхода переменных сессии. | yii\web\Session |
| $name | строка | Текущее имя сессии | yii\web\Session |
| $readCallback | вызываемый объект | Обратный вызов, который будет вызван во время чтения данных сессии. | yii\web\MultiFieldSession |
| $savePath | строка | Текущий путь сохранения сессии, по умолчанию '/tmp'. | yii\web\Session |
| $sessionTable | строка | Имя таблицы базы данных, хранящей данные сессии. | yii\web\DbSession |
| $timeout | целое число | Количество секунд, после которых данные будут считаться "мусором" и удалены. | yii\web\Session |
| $useCookies | булево значение|null | Значение, указывающее, должны ли использоваться файлы cookie для хранения идентификаторов сессий. | yii\web\Session |
| $useCustomStorage | булево значение | Использовать ли пользовательское хранилище. | yii\web\MultiFieldSession |
| $useTransparentSessionID | булево значение | Включена ли поддержка прозрачного sid, по умолчанию false. | yii\web\Session |
| $writeCallback | вызываемый объект | Обратный вызов, который будет вызван при записи данных сессии. | yii\web\MultiFieldSession |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | yii\base\Component |
| __clone() | Этот метод вызывается после создания объекта путём клонирования существующего. | yii\base\Component |
| __construct() | Конструктор. | yii\base\Object |
| __get() | Возвращает значение свойства компонента. | yii\base\Component |
| __isset() | Проверяет, установлено ли свойство, т. е. определено и не равно null. | yii\base\Component |
| __set() | Устанавливает значение свойства компонента. | yii\base\Component |
| __unset() | Устанавливает свойство компонента в значение null. | yii\base\Component |
| addFlash() | Добавляет сообщение всплывающего окна. | yii\web\Session |
| attachBehavior() | Прикрепляет поведение к этому компоненту. | yii\base\Component |
| attachBehaviors() | Прикрепляет список поведений к компоненту. | yii\base\Component |
| behaviors() | Возвращает список поведений, по которым должен вести себя этот компонент. | yii\base\Component |
| canGetProperty() | Возвращает значение, указывающее, можно ли считать свойство. | yii\base\Component |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Component |
| className() | Возвращает полное имя этого класса. | yii\base\Object |
| close() | Завершает текущую сессию и сохраняет данные сессии. | yii\web\Session |
| closeSession() | Обработчик закрытия сессии. | yii\web\Session |
| count() | Возвращает количество элементов в сессии. | yii\web\Session |
| destroy() | Освобождает все переменные сессии и уничтожает все данные, зарегистрированные в сессии. | yii\web\Session |
| destroySession() | Обработчик уничтожения сессии. | yii\web\DbSession |
| detachBehavior() | Открепляет поведение от компонента. | yii\base\Component |
| detachBehaviors() | Открепляет все поведения от компонента. | yii\base\Component |
| ensureBehaviors() | Убеждается, что поведения, объявленные в behaviors(), прикреплены к этому компоненту. | yii\base\Component |
| gcSession() | Обработчик GC (уборки мусора) сессии. | yii\web\DbSession |
| get() | Возвращает значение переменной сессии по имени переменной сессии. | yii\web\Session |
| getAllFlashes() | Возвращает все сообщения всплывающего окна. | yii\web\Session |
| getBehavior() | Возвращает объект именованного поведения. | yii\base\Component |
| getBehaviors() | Возвращает все присоединённые к этому компоненту поведения. | yii\base\Component |
| getCookieParams() | yii\web\Session | |
| getCount() | Возвращает количество элементов в сессии. | yii\web\Session |
| getFlash() | Возвращает сообщение всплывающего окна. | yii\web\Session |
| getGCProbability() | yii\web\Session | |
| getHasSessionId() | Возвращает значение, указывающее, содержит ли текущий запрос идентификатор сессии. | yii\web\Session |
| getId() | Получает идентификатор сессии. | yii\web\Session |
| getIsActive() | yii\web\Session | |
| getIterator() | Возвращает итератор для перебора переменных сессии. | yii\web\Session |
| getName() | Получает имя текущей сессии. | yii\web\Session |
| getSavePath() | Получает текущий путь сохранения сессии. | yii\web\Session |
| getTimeout() | yii\web\Session | |
| getUseCookies() | Возвращает значение, указывающее, должны ли использоваться куки для хранения идентификаторов сессии. | yii\web\Session |
| getUseCustomStorage() | Возвращает значение, указывающее, нужно ли использовать пользовательское хранилище сессии. | yii\web\MultiFieldSession |
| getUseTransparentSessionID() | yii\web\Session | |
| has() | yii\web\Session | |
| hasEventHandlers() | Возвращает значение, указывающее, есть ли обработчик, прикрепленный к указанному событию. | yii\base\Component |
| hasFlash() | Возвращает значение, указывающее, есть ли сообщения всплывающего окна, связанные с указанным ключом. | yii\web\Session |
| hasMethod() | Возвращает значение, указывающее, определён ли метод. | yii\base\Component |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство для этого компонента. | yii\base\Component |
| init() | Инициализирует компонент DbSession. | yii\web\DbSession |
| off() | Открепляет существующий обработчик событий от этого компонента. | yii\base\Component |
| offsetExists() | Этот метод требуется интерфейсом ArrayAccess. | yii\web\Session |
| offsetGet() | Этот метод требуется интерфейсом ArrayAccess. | yii\web\Session |
| offsetSet() | Этот метод требуется интерфейсом ArrayAccess. | yii\web\Session |
| offsetUnset() | Этот метод требуется интерфейсом ArrayAccess. | yii\web\Session |
| on() | Прикрепляет обработчик событий к событию. | yii\base\Component |
| open() | Начинает сессию. | yii\web\Session |
| openSession() | Обработчик открытия сессии. | yii\web\Session |
| readSession() | Обработчик чтения сессии. | yii\web\DbSession |
| regenerateID() | Обновляет текущий идентификатор сессии новым сгенерированным. | yii\web\DbSession |
| remove() | Удаляет переменную сессии. | yii\web\Session |
| removeAll() | Удаляет все переменные сессии | yii\web\Session |
| removeAllFlashes() | Удаляет все сообщения всплывающих уведомлений. | yii\web\Session |
| removeFlash() | Удаляет сообщение всплывающего уведомления. | yii\web\Session |
| set() | Добавляет переменную сессии. | yii\web\Session |
| setCookieParams() | Устанавливает параметры cookie сессии. | yii\web\Session |
| setFlash() | Устанавливает сообщение всплывающего уведомления. | yii\web\Session |
| setGCProbability() | yii\web\Session | |
| setHasSessionId() | Устанавливает значение, указывающее, отправлен ли текущим запросом идентификатор сессии. | yii\web\Session |
| setId() | Устанавливает идентификатор сессии. | yii\web\Session |
| setName() | Устанавливает имя для текущей сессии. | yii\web\Session |
| setSavePath() | Устанавливает текущий путь сохранения сессии. | yii\web\Session |
| setTimeout() | yii\web\Session | |
| setUseCookies() | Устанавливает значение, указывающее, должны ли использоваться cookie для хранения идентификаторов сессии. | yii\web\Session |
| setUseTransparentSessionID() | yii\web\Session | |
| trigger() | Вызывает событие. | yii\base\Component |
| writeSession() | Обработчик записи сессии. | yii\web\DbSession |
Защищённые методы
| Метод | Описание | Определено |
|---|---|---|
| composeFields() | Составляет набор полей хранения для записи сессии. | yii\web\MultiFieldSession |
| extractData() | Извлекает данные сессии из набора полей хранения. | yii\web\MultiFieldSession |
| registerSessionHandler() | Регистрирует обработчик сессии. | yii\web\Session |
| updateFlashCounters() | Обновляет счётчики для сообщений всплывающих уведомлений и удаляет устаревшие сообщения всплывающих уведомлений. | yii\web\Session |
Подробности свойств
$db общедоступное свойство
Объект подключения к базе данных или идентификатор компонента приложения для подключения к базе данных. После создания объекта DbSession, если вы хотите изменить это свойство, вы должны назначить его только объектом подключения к базе данных. Начиная с версии 2.0.2, это также может быть массив конфигурации для создания объекта.
public yii\db\Connection|array|string $db = 'db'
$sessionTable общедоступное свойство
Имя таблицы базы данных, которая хранит данные сессии. Таблица должна быть предварительно создана следующим образом:
CREATE TABLE session
(
id CHAR(40) NOT NULL PRIMARY KEY,
expire INTEGER,
data BLOB
)
где 'BLOB' относится к типу BLOB вашего предпочитаемого СУБД. Ниже приведены типы BLOB, которые можно использовать для некоторых популярных СУБД:
- MySQL: LONGBLOB
- PostgreSQL: BYTEA
- MSSQL: BLOB
При использовании DbSession на сервере производства, рекомендуется создать индекс базы данных для столбца 'expire' в таблице сессии для повышения производительности.
Обратите внимание, что в соответствии с настройкой php.ini session.hash_function, вам может потребоваться настроить длину столбца id. Например, если session.hash_function=sha256, вы должны использовать длину 64 вместо 40.
public string $sessionTable = '{{%session}}'
Подробности методов
destroySession() общедоступный метод
Обработчик уничтожения сессии.
| public boolean destroySession ( $id ) | ||
|---|---|---|
| $id | string |
Идентификатор сессии |
| return | boolean |
Успешно ли уничтожена сессия |
gcSession() общедоступный метод
Обработчик GC (уборки мусора) сессии.
| public boolean gcSession ( $maxLifetime ) | ||
|---|---|---|
| $maxLifetime | integer |
Количество секунд после которого данные будут считаться 'мусором' и очищены. |
| return | boolean |
Успешно ли проведена уборка мусора сессии |
init() общедоступный метод
Инициализирует компонент DbSession.
Этот метод инициализирует свойство $db, чтобы убедиться, что оно ссылается на действительное подключение к базе данных.
| public void init ( ) | ||
|---|---|---|
| throws | yii\base\InvalidConfigException |
если $db недействителен. |
readSession() общедоступный метод
Обработчик чтения сессии.
| public string readSession ( $id ) | ||
|---|---|---|
| $id | string |
Идентификатор сессии |
| return | string |
Данные сессии |
regenerateID() общедоступный метод
Обновляет текущий идентификатор сессии новым сгенерированным .
Для получения дополнительной информации см. http://php.net/session_regenerate_id.
| public void regenerateID ( $deleteOldSession = false ) | ||
|---|---|---|
| $deleteOldSession | boolean |
Удалить ли старый связанный файл сессии. |
writeSession() общедоступный метод
Обработчик записи сессии.
| public boolean writeSession ( $id, $data ) | ||
|---|---|---|
| $id | string |
Идентификатор сессии |
| $data | string |
Данные сессии |
| return | boolean |
Успешна ли запись сессии |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-web-dbsession.html