StoreGlobalTempString

From SunFlurry wiki
Jump to: navigation, search
  StoreGlobalTempString (Серверные функции)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Сервер
Исключения:Невозможно превратить в строку, ошибка длины параметров.
Визуальность:Нет

Функция изменяет значение временной именной переменной на сервере, которая будет доступна другим пользователям, однако, будет потеряна при перезагрузке сервера. Имя и значение переменной представляют собой UTF-16 строки с произвольным набором символов. Сервер накладывает ограничения на размер имени переменной и значения для уменьшения расхода памяти. Обычно подобные строки используются для хранения глобальных флагов проекта, если они не требуют сохранения между сессиями. К примеру, флаг выполнения цикла очистки каталога от старых пакетов может содержать время последнего запуска обработки очистки. Сама обработка является достаточно затратной по ресурсам или времени, чтобы выполнять ее при каждом обращении пользователя к каталогу, и не настолько важной, чтобы сохранять время ее прошлого запуска на диске или в базе данных. Обращение к строкам в многопользовательском режиме можно защитить с помощью именованных серверных семафоров (см. DBLockStringMutex), однако, часто это не имеет особого смысла из-за низкой важности их значений.

Синтаксис

StoreGlobalTempString(<Имя переменной (STRING)>,<Значение переменной (STRING)>)

Аргументы

  • <Имя переменной (STRING)> - Имя, под которым необходимо сохранить текущее значение. Имя переменной не может быть длиннее 65536 символов, и может содержать любые символы.
  • <Значение переменной> - Произвольная строка для ассоциации с именем. Значение не может быть длиннее 1048576 символов, и может содержать любые символы (в т. ч. нулевые).

Примеры

//Необходимо ли запустить процедуру очистки
Стр:=RestoreGlobalTempString("ОчисткаКаталогаЮрЛица"+аЮЛ.Code);
If _Or(Стр="",GetPeriod(Date(Стр),Date(),4)>14400) Then //4 часа
  //Сохраним текущее время старта процедуры очистки
  StoreGlobalTempString("ОчисткаКаталогаЮрЛица"+аЮЛ.Code,FormatDate(Date(),"dd.mm.YYYY hh:tt:ss"));
  ВыполнитьПроцедуруОчистки(аЮЛ);
EndIf;

...