powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Forms + Timer = ?
13 сообщений из 13, страница 1 из 1
Forms + Timer = ?
    #36359220
mdvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в наличии :
Forms 6i + Oracle 8/10
проблема :
глюки при длительной работе формы с повторяющимся таймером

теперь подробнее :
есть форма, которая запущена на компе постоянно (в течении рабочего времени) и в ней создан таймер срабатывающий через 1 секунду, со свойством REPEAT, пишущий лог в файл на диске

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

кто-нить сталкивался/решал как-то проблему ?


покопавшись в дебаггере ifrun60.exe+форма_с_таймером
понял что форм для повторяющегося REPEAT таймера использует WinApi функции SetTimer/KillTimer
то есть вызов
declare
T Timer;
begin
T:=Create_Timer('zzz',1000,REPEAT)
end;

-создает некую структурную переменную в Forms с параметрами имя таймера, его номер в windows, период срабатывания, и зацикленность

-вызывается WinApi.SetTimer которая физически создает таймер в windows с необходимым периодом срабатывания и процедурой обработки с бредовым названием (уже и не помню - назовем А)
-в переменной T сохраняется номер таймера в windows (ID)
-через секунду таймер сработает и вызовется процедура A, которая посылает в формс сообщение чтобы сработал триггер WHEN-TIMER-EXPIRED и устанавливает у приложения свойство сработанного таймера, чтобы Get_Application_Property(Timer_Name) нам его мог вернуть
-потом таймер в windows с номером ID удаляется при помощи WinApi.KillTimer и заново создается WinApi.SetTimer НО! уже с новым номером ID

и так по циклу последние 3 шага пока мы не выйдем из формы или не убьем таймер в формсе при помощи delete_timer

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

чисто теоретически, единственное узкое место, это WinApi.SetTimer - на каком-нить шаге она может не создать таймер ( windows - что с нее взять :( ), и вся цепочка летит к чертям

формс думает что в переменной T есть все параметры таймера и Find_Timer('zzz') вернет нам что он есть, однако в windows он не создан ! и потому до срабатывания в формс When-Timer-Expired дело не доходит !

PS
попробую в ближайшее время
-вставить в форму код по пересозданию таймеров, если они померли, при помощи
delete_timer + create_timer
-извне подлавливать, что в форме подохли таймеры, и посылать ей сообщение о чтобы она пересоздала таймеры
-отослать юзерам для тестирования, потому как сами вйти на такую ситуацию с подыханием триггеров не смогли
...
Рейтинг: 0 / 0
Forms + Timer = ?
    #36359555
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mdvvв наличии :
Forms 6i + Oracle 8/10
проблема :
глюки при длительной работе формы с повторяющимся таймером

А чем плох одноразовый таймер, который каждый раз создается заново?
...
Рейтинг: 0 / 0
Forms + Timer = ?
    #36359618
mdvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>>А чем плох одноразовый таймер, который каждый раз создается заново?
возможно и ничем

но

1)
create_timer(REPEAT), по идее, я вызвал один раз и забыл
а create_timer(NO_REPEAT) будет вызываться с определенной периодичностью,
при инициализации формы и в самом триггере W-T-E

2)
а кто гарантирует что при очередном создании таймера в триггере W-T-E он не создастся по какой либо причине, ну и все ! приехали, цикл на этом прерван
create_timer(REPEAT) в этом плане надежнее, imho

но это все чисто теоретически

поэтому я и обратился с вопросом, может кто в таком режиме таймеры и использовал и поимел соответсвующие проблемы
...
Рейтинг: 0 / 0
Forms + Timer = ?
    #36359697
Тифа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у нас работает без репита с постоянным крейтом, описанного не замечалось

попробуйте
...
Рейтинг: 0 / 0
Forms + Timer = ?
    #36359717
mdvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>>у нас работает без репита с постоянным крейтом, описанного не замечалось
1) в каком режиме - 24/7 ?
2) forms 6 ?
...
Рейтинг: 0 / 0
Forms + Timer = ?
    #36359744
Тифа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mdvv>>у нас работает без репита с постоянным крейтом, описанного не замечалось
1) в каком режиме - 24/7 ?
2) forms 6 ?
да и да
перезапускаем только когда обновления ставим
...
Рейтинг: 0 / 0
Forms + Timer = ?
    #36359764
mdvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>>у нас работает без репита с постоянным крейтом, описанного не замечалось

на каком количестве рабочих мест это оттестировано ?
и какова вероятность что если таймер подохнет, это заметит юзер ?
...
Рейтинг: 0 / 0
Forms + Timer = ?
    #36359787
Тифа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну у нас наверно для других целей используются такие формы, как обработчики событий, раз в определенное время запускаются какие-либо действия
в итоге каждая форма запущена 1 раз, ну и форм таких около двадцати, но я думаю от одновременного кол-ва не зависит, скорее от времени, у нас больше чем 1 секунда, поэтому с уверенностью сказать не могу, но попробовать стоит
...
Рейтинг: 0 / 0
Forms + Timer = ?
    #36359831
mdvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>>у и форм таких около двадцати, но я думаю от одновременного кол-ва не зависит
дело не в одновременном количестве, а именно в количестве вариаций
комп+винда+формс+юзер+ситуация

то есть чем больше юзеров, тем больше выявленных глюков :)

>>как обработчики событий, раз в определенное время запускаются какие-либо действия
у нас другие цели
для головной программы была разработана форма, которая запускается отдельной сессией, для инфо-окон, вопросов-ответов, логов, прогресс-бара и тд и тд,
для того чтобы и из любой процедуры формса/БД можно было без разбиения процесса получить реакцию юзера на какое-то событие
работает через dbms_pipe
и все отлично, всо отлажено-проверено, если б не эти таймеры (которые раз в секунду проверяют каналы)
вот они чуток портят картину, делаю нестабильным работу всего механизма
...
Рейтинг: 0 / 0
Forms + Timer = ?
    #36361362
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mdvv
и все отлично, всо отлажено-проверено, если б не эти таймеры (которые раз в секунду проверяют каналы)
вот они чуток портят картину, делаю нестабильным работу всего механизма


"многоразовый таймер >одноразовый таймер с перезапуском. Среда разработки не важна."
из личного ДАО.



Оффтопик on
И вообще, может здесь здесь совсем не таймер нужен?

Тут подумалось> пяйп имеет дурную привычку переполняться.
Вы уверены что проблемы именно в таймере?
...
Рейтинг: 0 / 0
Forms + Timer = ?
    #36361960
mdvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>>Оффтопик on
>>И вообще, может здесь здесь совсем не таймер нужен?
есть предложения ?
бесконечный loop - end loop с заморозкой процесса на 1 сек для опроса пайп-канала нагружает проц
да и калечно все это
таймер в этом плане самое-то


>>Тут подумалось> пяйп имеет дурную привычку переполняться.
вы о ORA-06558 ?
у нас пайп-канал после отсылки сообщения и приема контрольного-сообщения о доставке чистится, к тому же у нас все exception ловятся и логгируются

>>Вы уверены что проблемы именно в таймере?
ну 100% уверять не могу
у нас есть софт, который висит круглосуточно на объектах у всех клиентов и принимает/проводит изменения в проект, аналогично опрашивает почтовые ящики раз в 15минут
так вот и там тоже таймер иногда (раз в меся-два-три, у некоторых клиентов) перестает работать
приходится перезапускать, благо терминалы ко многим пробиты
...
Рейтинг: 0 / 0
Forms + Timer = ?
    #36364688
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mdvv>>Оффтопик on
>>И вообще, может здесь здесь совсем не таймер нужен?
есть предложения ?

бесконечный loop - end loop с заморозкой процесса на 1 сек для опроса пайп-канала нагружает проц
да и калечно все это
таймер в этом плане самое-то


OAQ например.


mdvv
у нас есть софт, который висит круглосуточно на объектах у всех клиентов и принимает/проводит изменения в проект, аналогично опрашивает почтовые ящики раз в 15минут
так вот и там тоже таймер иногда (раз в меся-два-три, у некоторых клиентов) перестает работать
приходится перезапускать, благо терминалы ко многим пробиты
А оракл джобы по каким прочинам не подошли?
...
Рейтинг: 0 / 0
Forms + Timer = ?
    #36364763
mdvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>>OAQ например.
а смысл ? больше рюшечек и понтов ?
у нас и пайпы отлично работают

>>А оракл джобы по каким прочинам не подошли?
по всем
долго описывать, да и не по теме это
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Forms + Timer = ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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