В чем разница между SessionHandlerInterface :: write и SessionUpdateTimestampHandlerInterface :: updateTimestamp? - PullRequest
0 голосов
/ 06 декабря 2018

Логика сеанса PHP имеет два различных интерфейса SessionHandlerInterface и SessionUpdateTimestampHandlerInterface, в то время как интерфейс SessionUpdateTimestampHandlerInterface еще не полностью описан в документации.

Функции SessionHandlerInterface::write и SessionUpdateTimestampHandlerInterface::updateTimestamp чувствуются вполнеаналогичный.Оба имеют одинаковые аргументы (идентификатор сеанса и данные сеанса) и возвращают логическое значение.

В чем разница между этими двумя функциями?

Чем должен отличаться код, реализующий эти две функции?

Каким образом код должен обновлять отметку времени, если для функции updateTimestamp нет отметки времени?

Изменить: я создал PHP ошибка, касающаяся отсутствующих документов .

1 Ответ

0 голосов
/ 06 декабря 2018

Эти два метода очень похожи, но вызываются в разных ситуациях.

1)

SessionHandler без SessionUpdateTimestampHandlerInterface:

Зарегистрированный пользователь запрашивает страницу, и его сеанс со всеми данными загружается.Во время запроса набор данных не изменяется, и после закрытия сеанса все данные будут снова записаны в хранилище (вызовы SessionHandlerInterface::write).Поэтому вы будете снова и снова записывать одни и те же данные.

SessionHandler с SessionUpdateTimestampHandlerInterface:

Тот же сценарий, но теперь, если набор данных не изменен, он вызовет SessionUpdateTimestampHandlerInterface::updateTimestamp.Преимущество состоит в том, что теперь вы знаете, что вам не нужно снова писать набор данных, и вы можете просто обновить время существования существующего набора данных.Это может значительно повысить производительность.

2)

Это зависит от того, где вы храните сеансы / данные.SessionHandlerInterface::write должен действительно записать данные, а SessionUpdateTimestampHandlerInterface::updateTimestamp, если возможно, просто обновить время жизни существующего элемента.У Symfony есть несколько хороших примеров .

3)

Отметка времени должна совпадать с максимальной продолжительностью жизни, чтобы «сбрасывать» ее при каждом запросе, как при обычной записи.

Документация, о которой говорилось выше, на данный момент не годится.Некоторая полезная информация может быть найдена в этом RFC .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...