Эти два метода очень похожи, но вызываются в разных ситуациях.
1)
SessionHandler без SessionUpdateTimestampHandlerInterface
:
Зарегистрированный пользователь запрашивает страницу, и его сеанс со всеми данными загружается.Во время запроса набор данных не изменяется, и после закрытия сеанса все данные будут снова записаны в хранилище (вызовы SessionHandlerInterface::write
).Поэтому вы будете снова и снова записывать одни и те же данные.
SessionHandler с SessionUpdateTimestampHandlerInterface
:
Тот же сценарий, но теперь, если набор данных не изменен, он вызовет SessionUpdateTimestampHandlerInterface::updateTimestamp
.Преимущество состоит в том, что теперь вы знаете, что вам не нужно снова писать набор данных, и вы можете просто обновить время существования существующего набора данных.Это может значительно повысить производительность.
2)
Это зависит от того, где вы храните сеансы / данные.SessionHandlerInterface::write
должен действительно записать данные, а SessionUpdateTimestampHandlerInterface::updateTimestamp
, если возможно, просто обновить время жизни существующего элемента.У Symfony есть несколько хороших примеров .
3)
Отметка времени должна совпадать с максимальной продолжительностью жизни, чтобы «сбрасывать» ее при каждом запросе, как при обычной записи.
Документация, о которой говорилось выше, на данный момент не годится.Некоторая полезная информация может быть найдена в этом RFC .