powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Timeout для отдельной csp-страницы
25 сообщений из 28, страница 1 из 2
Timeout для отдельной csp-страницы
    #36056141
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть csp страница, где формируется большой отчёт. Сам отчёт строится гораздо больше одной минуты.
Подскажите, как можно задать произвольный timeout для конкретной страницы.

Пытаюсь делать на странице так, но не помогает.
Код: plaintext
1.
2.
3.
4.
5.
ClassMethod %OnPreHTTP() As %Boolean [ ServerOnly =  1  ]
{
	set %session.AppTimeout =  3600 
	quit  1 
}

Заранее спасибо.
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36056260
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этот timeout, что пытаешься поменять относится к другому
а повлиять ты пытаешь на timeout ответа сервера браузеру и помоему на него повлиять никак нельзя, он определяется в браузере, сколько он будет ждать ответа
выход по-моему только один разбить отчет на попроще или сделать страницу для загрузки отчета в браузер, типа сначала загружается страница пустышка которая с определенной периодичностью запрашивает порцию отчета и выводит, таким образом можно и прогресс рисовать пользователю, а то он со скуки умрет, а так хоть что-то моргать будет, показывая что работа кипит.

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36056428
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutni , оставь таймаут в покое именяй алгоритьму составления отчета. Пусть страничка живет своей жизнью, а отчет своей...
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36057446
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я понял предлагается такой алгоритм:
1. Отрисовать страницу отчёта, без самих данных.
2. Запустить функцию получения данных.
3. После окончания ее работы отрисовать на странице данные.

В связи с этим подскажите:
На какое событие повесить вызов фунции получения данных? Сама страница - класс наследник от %ZEN.Component.page. Пытался сделать что-то типа:
Код: plaintext
1.
2.
3.
4.
Method %OnDrawHTMLBody() As %Status
{
	&js<setTimeout("#(..BuildReport())#",  50 );>
	q $$$OK
}
- не работатет.
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36057506
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutniЕсть csp страница,
sutniСама страница - класс наследник от %ZEN.Component.page.

Так чем же ты все же пользуешься?

А алгоритм, как вариант, такой...
- Показывается запрос на составление
- По нажатию на кнопку "Составить" запускается процесс на сервере
- Процесс пишет некий прогресс в оговореный глобал/класс
- Страница переходит в некий режим ожидания с показом прогресса выполнения процесса
- По окончании составления отчета он отображается на страниц (возможно уже другой)
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36057531
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutniКак я понял предлагается такой алгоритм:
1. Отрисовать страницу отчёта, без самих данных.
2. Запустить функцию получения данных.
3. После окончания ее работы отрисовать на странице данные.

В связи с этим подскажите:
На какое событие повесить вызов фунции получения данных? Сама страница - класс наследник от %ZEN.Component.page. Пытался сделать что-то типа:
Код: plaintext
1.
2.
3.
4.
Method %OnDrawHTMLBody() As %Status
{
	&js<setTimeout("#(..BuildReport())#",  50 );>
	q $$$OK
}
- не работатет.

а вы не пробовали посмотреть что у вас на выходе получается ?
вообще то данная строка не означает что на выходе будет именно скрипт, вы вставляете в html код
и конечно он не выполнится

и кстати, если я не ошибаюсь в setTimeout передается время в миллисекундах, и 50 миллисекунд по-моему это слишком быстро, за это время только ответа дождетесь от сервера
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36057608
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa

Так чем же ты все же пользуешься?

А алгоритм, как вариант, такой...
- Показывается запрос на составление
- По нажатию на кнопку "Составить" запускается процесс на сервере
- Процесс пишет некий прогресс в оговореный глобал/класс
- Страница переходит в некий режим ожидания с показом прогресса выполнения процесса
- По окончании составления отчета он отображается на страниц (возможно уже другой)

Это уже ясно. Можно конкретнее, какими стандартными методами для этого можно воспользоваться? На что по уму можно повесить начало построения отчёта? Куда копать?


DAiMor,

Сам-то метод BuildReport() выполняется. Только не после отрисовки страницы, как бы хотелось, а во время. Таким образом, всё равно приходится ожидать отчёта без прорисовки страницы.
По поводу 50 - я пробовал и 5000. Результат тот-же.
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36057612
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutniКуда копать?
Так у тебя ZEN или CSP страница?
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36057712
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

ZEN
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36057722
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скрипты на странице начинают выполнятся когда страница загрузилась

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36057764
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С ZEN DAiMor больше поможет...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36057798
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант на кнопку повесить JS-функцию которая вызовет кащейский метод, который запустит джоб, формирующий отчет. Затем скриптовая функция установит скриптовый таймаут, который будет читать "прогресс" кащейского джоба и чего-то показывать на странице...
Когда отчет составится тайаутная функция может сделать переход на страницу с готовым отчетом...

Вот типа такого я бы делал.
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36057835
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да ничего сильно отличающегося, вам уже сказали отделить формирование от отображения
по запуску формирования запускается процесс наполнения данными какого-нибудь глобала

на странице которая будет отображать, сделать скрипт который будет запускаться в settimeout
и очередную забирать порцию данных с сервера, с проверкой не закончился ли процесс и соответственно вывод на страницу полученных данных, таким образом, странчка постепенно наполнится в процессе формирования

либо если, у вас данные нельзя выдавать по-порционно но можно быстро вывести после формирования, есть вариант когда опять же 1 страница для ожидания окончания формирования данных, а по окончанию сразу перенаправляет на другую страницу в которую загрузятся уже сформированные данные


_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36057868
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,

Идея ясна. Спасибо.
Но как на ZEN странице запустить метод, который бы начал работу, когда страница уже отобразилась в браузере? Или для этого нужно впихнуть js-код в html?

В Web-UI не силён. Извините.
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36057916
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutniDAiMor,

Идея ясна. Спасибо.
Но как на ZEN странице запустить метод, который бы начал работу, когда страница уже отобразилась в браузере? Или для этого нужно впихнуть js-код в html?

В Web-UI не силён. Извините.

вы же написали что ваш код работает
&js<setTimeout("#(..BuildReport())#", 50);>

только он выполнится 1 раз внутри BuildReport также ставьте SetTimeout чтобы он выполнялся постоянно
и в нем же делать опросы сервера, соответственно BuildReport пишите на javascript и выполняется на клиенте из него вызывается ZenMethod который выполнится на сервере
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36057942
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMorsutniDAiMor,

Идея ясна. Спасибо.
Но как на ZEN странице запустить метод, который бы начал работу, когда страница уже отобразилась в браузере? Или для этого нужно впихнуть js-код в html?

В Web-UI не силён. Извините.

вы же написали что ваш код работает
&js<setTimeout("#(..BuildReport())#", 50);>

только он выполнится 1 раз внутри BuildReport также ставьте SetTimeout чтобы он выполнялся постоянно
и в нем же делать опросы сервера, соответственно BuildReport пишите на javascript и выполняется на клиенте из него вызывается ZenMethod который выполнится на сервере

..BuildReport() - это не одна итерация построения отчёта. Это весь фунционал отчёта (состоящий преимущественно из sql), выполняющийся довольно долго. Так вот в конструкции &js<setTimeout("#(..BuildReport())#", 50);> пока не выполнится BuildReport() - страница не отрисовывается. Хотелось бы вначале отрисовать страницу, а затем запустить BuildReport().
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36057991
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда вы не так делаете

есть страница на которой пользователь жмет "сформировать отчет"
по нажатию запускается ФОНОВЫЙ процесс формирующий данные отчета
и также запускается повторяющаяся функция которая будет опрашивать сервер на предмет получения информации о запущенном процессе

ты опять же все пытаешься воткнуть в одну страницу, нужно разделение труда

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36058016
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,

Есть страница, где пользователь задаёт параметры отчёта с кнопкой Построить.
После выбора параметров и нажатия этой кнопки выполняется код наподобие:
Код: plaintext
1.
2.
3.
&js<
         	window.location.href = "PrActivity.SalesMgmt.Report.PReportByGoodNameDyn.cls?#(params)#";
	 	>

Так вот на этой новой странице (PrActivity.SalesMgmt.Report.PReportByGoodNameDyn.cls) и строится сам отчёт. Хочется отобразить эту новую страницу с некоторым завораживающим gif'ом :), а тем временем запустить процедуру получения отчёта (BuildReport). После выполнения BuildReport динамически заполнить некий table и отобразить его на странице вместо gif.
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36058092
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutni , вот мы тебе и талдычим - меняй алгоритьм.
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36058126
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

Ну а чем этот плох? Просто сложный sql-запрос формируется и выполняется дольше одной минуты. Ну и следовательно достигается timeout. Нужно, как Вы все мне объяснили, отобразить вначале страницу, а потом запустить отчёт на формирование. Я согласен, так будет лучше. (Неплохо-бы заодно запустить это в параллельном режиме, но с job'ами я ещё не работал вовсе.) Так осталось дело за малым: разобраться как запустить на странице некий серверный метод после того как страница полностью отобразилась в браузере пользователя.
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36058141
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извини, но может за тебя еще и код написать, мы предложили варианты решения задачи по конкретному вопросу, если интересует что-то еще задавай конкретней

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36058198
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,

Конкретно вопрос в следующем: как на Zen-странице выполнить её метод после полной отрисовки страницы?

Если ответ подразумевает, что за меня нужно писать некий код - можно не отвечать.

Спасибо. Извините.
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36058236
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да что вы привязались к полной отрисовке, выполняйте в цикле javascript метод на клиенте который запускает zenmethod и возвращает порцию данных, данные кончились значит все готово
у вас так даже данные в таблице будут появляться почти сразу, но постепенно

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36058484
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=sutniКонкретно вопрос в следующем: как на Zen-странице выполнить её метод после полной отрисовки страницы?

Если ответ подразумевает, что за меня нужно писать некий код - можно не отвечать.

Спасибо. Извините.
Например, переопределив метод %OnAfterCreatePage() :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
...
Method %OnAfterCreatePage() As %Status
{
  d ..BigWork()
  Quit $$$OK
}

Method BigWork() As %Status [ ZenMethod ]
{
  h  150 
  ...
  Quit $$$OK
}
...
Попробуйте настроить таймаут Вашего CSP/ZEN-приложения в Портале .
Я в нём выполнял запросы, выполнявшиеся более минуты (синхронно).

PS: посмотрите ещё здесь и здесь .
...
Рейтинг: 0 / 0
Timeout для отдельной csp-страницы
    #36060328
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

К сожалению, метод %OnAfterCreatePage выполняется до отрисовки страницы. Если я делаю так:
Код: plaintext
1.
2.
3.
4.
5.
Method %OnAfterCreatePage() As %Status
{
	h  10 
	Quit $$$OK
}
страница отображается после 10-секундного ожидания.

Если сделать так:
Код: plaintext
1.
2.
3.
4.
5.
Method %OnAfterCreatePage() As %Status
{
	h  61 
	Quit $$$OK
}
- ошибка.

Настройка таймаута для всего приложения через портал управления конечно помогает. Но хотелось бы более точечной обработки длительных запросов.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Timeout для отдельной csp-страницы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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