Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сохранение ссылки на загруженый в память объект между http запросами
|
|||
|---|---|---|---|
|
#18+
Столкнулся с такой проблемой (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 запросами ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2006, 11:02 |
|
||
|
Сохранение ссылки на загруженый в память объект между http запросами
|
|||
|---|---|---|---|
|
#18+
а просто ID объекта нельзя передавать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2006, 14:51 |
|
||
|
Сохранение ссылки на загруженый в память объект между http запросами
|
|||
|---|---|---|---|
|
#18+
ZvezDukeа просто ID объекта нельзя передавать? Суть в том что мне нужно где-то хранить промежуточные данные - я не могу в каждом запросе загружать объект по id из базы, изменять его данные и обратно сохранять - потому что таких запросов несколько и отменить редактирование уже будет нельзя. Поэтому хочется хранить объект в памяти между запросами - но получается, что как только процесс завершается, все ссылки становятся недействительными. Поставлю вопрос по другому - можно как-то передавать ссылку объект между процессами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 15:21 |
|
||
|
Сохранение ссылки на загруженый в память объект между http запросами
|
|||
|---|---|---|---|
|
#18+
Нда, выяснилось, что %session это объект Persistent класса и между запросами скорее всего хранится в базе, т.е. OREF хранить в нем явно не стоит. Буду использовать сериализацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2006, 12:26 |
|
||
|
Сохранение ссылки на загруженый в память объект между http запросами
|
|||
|---|---|---|---|
|
#18+
так может попробовать в сеансе хранить всю изменяемую информацию об обекте + его ID, и при окончании редактирования сделать update? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2006, 10:39 |
|
||
|
|

start [/forum/topic.php?fid=39&tid=1559529]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
98ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
| others: | 253ms |
| total: | 442ms |

| 0 / 0 |
