dev-master 2021-12-07 15:57 UTC

This package is auto-updated.

Last update: 2024-11-07 23:11:59 UTC


README

Мы используем собственный транзакционный механизм сессий, избавленный от блокировок и постоянного чтения-записи, которым отличается встроенный в PHP механизм сессий.

Чтобы стартовать сессию нужно вызвать:

$session = $app->factory('Session');
$session->start(); /* или */ $session->startIfExists();

start() стартует сессию безусловно, а startIfExists() только если она уже была начата ранее. Если вы не планируете писать в сессию, используйте startIfExists(). Эти вызовы можно делать многократно — ошибки это не вызовет.

Дальше вы можете работать с $_SESSION (=== $session) как обычно. Вы также можете использовать $_SESSION->incr('someKey') для атомарной работы со счетчиками.

Сессия автоматически пишется в конце запроса, но вы также можете вызвать write(), regenerateId(), destroy() и другие методы.

Для краткости в контроллере есть хелперы в виде методов sessionStart() и sessionStartIfExists().

В сессии не рекомендуется хранить большие объекты, рекомендуется ограничиться скалярными значениями. Например, лучше хранить ключ UID вместо сериализованного объекта User. Объект User следует кешировать отдельно с помощью компонента Cache.