Обработка переполнения данных объектов $session и $client в сценарии


Существует ограничение на объем хранящихся данных в объектах $session и $client. При превышении лимита текущий сценарий прерывается, смартап перестает отвечать клиенту.

Для того, чтобы сценарий не прерывался, необходимо обрабатывать переполнение данных объектов $session и $client в сценарии.


Лимиты

По умолчанию установлены лимиты:

  • soft 100 Кб;
  • hard 1000 Кб.
Обратите внимание, что лимиты установлены для каждого объекта. Таким образом для данных объекта $client по soft лимиту доступно 100 Кб, для данных объекта $session также доступно 100 Кб.

Обработка переполнения

Если достигнут soft лимит, но при этом не превышен hard лимит, данные в объекты $session и $client будут сохраняться. При этом в сценарий приходят события о достижении soft лимита event: sessionDataSoftLimitExceeded и event: clientDataSoftLimitExceeded.

Если новые данные превышают hard лимит, то эти данные не сохраняются в объекты $session и $client. При этом в сценарий приходят события о достижении hard лимита event: sessionDataHardLimitExceeded и event: clientDataHardLimitExceeded.

Пример обработки переполнения данных в сценарии:

theme: /

    state:
        q: * *start
        go!: /start

    state: start
        q!: *
        script:
            $session.text = $parseTree.text    // сохраняем данные сессии
        a: Вы сказали: {{$parseTree.text}}.

    state:
        event: sessionDataSoftLimitExceeded    // обрабатываем событие о достижении soft лимита
        script:
            delete $session.text;               // при достижении soft лимита сессионные данные удаляются

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней