Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Сохранение ссылки на загруженый в память объект между http запросами / 6 сообщений из 6, страница 1 из 1
08.08.2006, 11:02
    #33904877
wanderleg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылки на загруженый в память объект между http запросами
Столкнулся с такой проблемой (cache 5.0.8.5105):
для редактирования через html (csp) данных экземпляра Persistent класса необходимо хранить где-то редактируемый объект между несколькими запросами пользователя. При сохранении OREF редактируемого объекта в сессии пользователя (%session) все работает только в первом запросе - при обращении в другом запросе к сохраненному OREF выдает "INVALID OREF". В глобале тоже самое.

Пример:

Set sessionId = ""
if ($DATA(%session.Data("data-edit", "session")))
{
Set sessionId = $Get(%session.Data("data-edit", "session"))
}

if (('sessionId) || (sessionId '= %session.SessionId))
{
// Новая сессия - загружаем объект в память и сохраняем его OREF

Set oref = ##class(SomeClass).%OpenId(id)
Set %session.Data("data-edit", "session") = %session.SessionId
Set %session.Data("data-edit", "id") = oref.%Id()
Set %session.Data("data-edit", "obj") = oref

Set obj = $Get(%session.Data("data-edit", "obj"))
if ($IsObject(obj))
{
// Работает
Write "OK"
}
}
else
{
// Старая сесия - пытаемся получить доступ к уже загруженному объекту

Set obj = $Get(%session.Data("data-edit", "obj"))
if ($IsObject(obj))
{
Write "OK"
}
else
{
// При попытке обратиться к данным выдает INVALID OREF
Write "INVALID OREF"
}
}

...
// Очистка данных после окончания редактирования
Set %session.Data("data-edit", "session") = ""


В докуметации прочитал, что при сохранении в глобал, oref вообще конвертируется в строку - хотя у меня все опять же работает, но только в текущем запросе.

Каким образом можно сохранить ссылку на объект в памяти между несколькими http запросами ?
...
Рейтинг: 0 / 0
09.08.2006, 14:51
    #33908200
ZvezDuke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылки на загруженый в память объект между http запросами
а просто ID объекта нельзя передавать?
...
Рейтинг: 0 / 0
10.08.2006, 15:21
    #33910803
wanderleg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылки на загруженый в память объект между http запросами
ZvezDukeа просто ID объекта нельзя передавать?

Суть в том что мне нужно где-то хранить промежуточные данные - я не могу в каждом запросе загружать объект по id из базы, изменять его данные и обратно сохранять - потому что таких запросов несколько и отменить редактирование уже будет нельзя.

Поэтому хочется хранить объект в памяти между запросами - но получается, что как только процесс завершается, все ссылки становятся недействительными.

Поставлю вопрос по другому - можно как-то передавать ссылку объект между процессами?
...
Рейтинг: 0 / 0
11.08.2006, 12:26
    #33912894
wanderleg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылки на загруженый в память объект между http запросами
Нда, выяснилось, что %session это объект Persistent класса и между запросами скорее всего хранится в базе, т.е. OREF хранить в нем явно не стоит.

Буду использовать сериализацию.
...
Рейтинг: 0 / 0
14.08.2006, 10:39
    #33915619
ZvezDuke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылки на загруженый в память объект между http запросами
так может попробовать в сеансе хранить всю изменяемую информацию об обекте + его ID, и при окончании редактирования сделать update?
...
Рейтинг: 0 / 0
14.08.2006, 15:06
    #33916724
wanderleg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылки на загруженый в память объект между http запросами
Можно и так.
Я сделал так: сохраняю в xml объект в конце запроса, храню этот xml в сессии, и загружаю в начале следующего запроса.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Сохранение ссылки на загруженый в память объект между http запросами / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]