Skip to content

Update session.md #553

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 3, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion session.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
git: a743d8c805e5d277c498010e9baae192eb083dc5
git: fc95dc890bc4085979406a11aee71227205ca0fb
---

# HTTP сессии
Expand All @@ -17,11 +17,13 @@ HTTP-приложения не имеют своего внутреннего с
Настройки драйвера `driver` сессии определяют где будут храниться данные сессии для каждого запроса. Laravel поставляется с целым набором замечательных драйверов:

<div class="content-list" markdown="1">

- `file` - сессии хранятся в `storage/framework/sessions`.
- `cookie` - сессии хранятся в виде зашифрованных cookie.
- `database` - хранение сессий в реляционной БД.
- `memcached` / `redis` - для хранения используются эти быстрые кэширующие хранилища.
- `array` - сессии хранятся в виде PHP-массивов и не будут сохраняться между запросами.

</div>

> {tip} Драйвер массива используется во время [тестирования](/docs/{{version}}/testing) и не сохраняет данные для последующих запросов.
Expand Down Expand Up @@ -210,12 +212,14 @@ Laravel автоматически обновляет ID сессии во вр
Поскольку задачи этих методов не так очевидны, давайте коротко рассмотрим каждый из них:

<div class="content-list" markdown="1">

- Метод `open` обычно используется в системе хранения файл-сессий. Поскольку Laravel поставляется с драйвером сессий `file`, вам почти никогда не потребуется делать что-либо в этом методе. Вы можете оставить его пустым как заглушку. То, что PHP требует реализовать данный метод, — это пример плохого проектирования интерфейса (обсудим это позже).
- Методом `close` зачастую можно пренебречь, как и методом `open`. Для большинства драйверов он не нужен.
- Метод `read` должен вернуть данные сессии по `$sessionId` в виде строки. Не нужно выполнять сериализацию или другое преобразование при получении или сохранении данных сессии в ваш драйвер, поскольку Laravel выполнит сериализацию за вас.
- Метод `write` должен записать указанную строку `$data` в соответствии с `$sessionId` в какое-либо постоянное хранилище, такое как MongoDB, Dynamo и т.п. И снова, не нужно выполнять сериализацию — Laravel выполнит её за вас.
- Метод `destroy` должен удалить из постоянного хранилища данные, соответствующие `$sessionId`.
- Метод `gc` должен удалить все данные сессий, которые старше заданного `$lifetime`, который в свою очередь является отметкой времени UNIX. Для самоочищающихся систем, таких как Memcached и Redis, этот метод можно оставить пустым.

</div>

<a name="registering-the-driver"></a>
Expand Down