Содержание
- Основы
- Cookie Sessions
- File System Sessions
- Database Sessions
- Memcached Sessions
- Redis Sessions
- In-Memory Sessions
The Basics
Интернет является обезличенным пространством. Это означает, что каждый запрос к вашему приложению не связан с передыдущим вопросом. Тем не менее, sessions позволяют хранить произвольные данные для каждого посетителя вашего приложения. Данные сессии для каждого посетителя хранятся на вашем веб-сервере, в то время куки, содержащее session ID, хранится на компьютере посетителя. Эти куки позволяет приложению "запомнить" сессии для данного пользователя и получить свои данные сессии при последующих запросах.
Примечание: Перед использованием сессий убедитесь в установке ключа приложения в application/config/application.php.
Шесть драйверов сессий доступны "из коробки":
- Cookie
- Файловая система
- База данных
- Memcached
- Redis
- Память (массивы)
Cookie сессии
Сессии на основе Cookie обеспечивают легкий и быстрый механизм для хранения информации сессий. Они также являются безопасными. Каждое cookie шифруется с помощью сильного AES-256 шифрование. Тем не менее, cookie имеет предел хранения 4 Кб, так что вы можете использовать другой драйвер, если вы храните много данных в сессии.
Для работы в этом режиме установите опцию драйвера сессий Cookie в application/config/session.php:
'driver' => 'cookie'
Сессии "в файловой системе"
Скорее всего, ваше приложение будет работать лучше с использованием сессий в файловой системе. В то же время, если ваше приложение потребляет много траффика, лучше использовать сессии в базе данных или Memcached сессии.
Для старта, просто включите соотетствующий драйвер в application/config/session.php:
'driver' => 'file'
Все готово!
Примечание: Сессии "в файлах" сохраняются в storage/sessions, не забудьте дать этой директории права на запись.
Сессии в базе данных
Для хранения сессий в базе данных сначала сконфигурируйте соединение с базой данных.
Теперь вам нужно создать таблицу сессий. Ниже указаны SQL выражения, которые помогут вам это сделать. Тем не менее, не забывайте - вы можете ипользовать для этого Artisan CLI!
Artisan
php artisan session:table
SQLite
CREATE TABLE "sessions" (
"id" VARCHAR PRIMARY KEY NOT NULL UNIQUE,
"last_activity" INTEGER NOT NULL,
"data" TEXT NOT NULL
);
MySQL
CREATE TABLE `sessions` (
`id` VARCHAR(40) NOT NULL,
`last_activity` INT(10) NOT NULL,
`data` TEXT NOT NULL,
PRIMARY KEY (`id`)
);
Если вам нравится использовать другое имя, просто измените его в table опции в файле application/config/session.php:
'table' => 'sessions'
Затем просто включите драйвер в application/config/session.php:
'driver' => 'database'
Memcached Сессии
Для использования этой возможности сконфигурируйте ваши Memcached серверы.
Затем просто "включите" драйвер в application/config/session.php файле:
'driver' => 'memcached'
Redis Сессии
Для использования этой возможности сконфигурируйте ваши Redis серверы.
Затем просто "включите" драйвер в application/config/session.php:
'driver' => 'redis'
Сессии в памяти
Драйвер сохраниния в памяти просто использует простой массив для сохранения данных сессии для текущего запроса. Этот драйвер прекрасно подходит для тестирования, так как не сохраняет данные на диске. Поэтому же он не рекомендуется к использованию в реальной работе.