|
Восстановить соединение в Forms
|
|||
---|---|---|---|
#18+
Здравствуйте. Приложение на Forms запущено постоянно и выполняет действия по таймеру (триггер WHEN-TIMER-EXPIRED ). Если происходит обрыв связи, то надо выйти из приложения и запустить снова. Если обрыв произошел ночью, то только утром происходит перезапуск. Хотят, чтобы коннект восстанавливался автоматически. Проверка наличия коннекта к базе проходит нормально, но не получается LOGOUT и LOGON триггер WHEN-TIMER-EXPIRED Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 15:38 |
|
Восстановить соединение в Forms
|
|||
---|---|---|---|
#18+
Мне кажется идея бредовая. Но это нужно нормально с заказчиком разговаривать, что требуется. Ну и второе, что за Forms. Он разный. Версия? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 16:30 |
|
Восстановить соединение в Forms
|
|||
---|---|---|---|
#18+
Forms 6i. Знаю, что бредовая, но именно заказчик требует автоматического восстановления соединения ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 16:37 |
|
Восстановить соединение в Forms
|
|||
---|---|---|---|
#18+
Лично я бы сделал отдельное приложение монитор. Запустили монитор, он запустил Forms Runtime, если Forms Runtime подвис/вылетел/потерял соединение - убили процесс, запустили снова. Поздно пить боржоми. Почки уже отвалились. Только в морг. IMHO & AFAIK Как банальный вариант, просто батник: запуск Forms + goto на начало. В Forms на таймер выход. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 16:48 |
|
Восстановить соединение в Forms
|
|||
---|---|---|---|
#18+
А что за обработка на клиенте-то у вас? Нельзя ли ее на сервер, на scheduler вынести? А если, как вариант, брутально запустить новый экземпляр можно попробовать: host('start ifrun60 module=... userid=...'); и выйти из дисконнектнувшегося экземпляра? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 16:58 |
|
Восстановить соединение в Forms
|
|||
---|---|---|---|
#18+
монитор сверху не катит. Я не могу понять почему в моем примере не происходит logout, только в этом загвоздка. если я делаю тестовую форму с проверкой соединения по кнопке - все работает, а тут по таймеру, получается, что что-то не устраивает Forms ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 16:58 |
|
Восстановить соединение в Forms
|
|||
---|---|---|---|
#18+
-=APS=-,нет, обработка должна быть как есть. А если хост запущу, то из этого приложения я же не выйду пока новое не закроется ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 17:01 |
|
Восстановить соединение в Forms
|
|||
---|---|---|---|
#18+
новый2А если хост запущу, то из этого приложения я же не выйду пока новое не закроется Неправда. "Вы просто не умеете его готовить" ( C ) Но через HOST это сильно топорно. Id процесса не получить, процесс не отмониторить, не убить и т.д. В общем, лично мне такое решение нафиг. Ну и не факт, что при обломившемся коннекте удастся "просто выйти". IMHO & AFAIK. -=APS=-...и выйти из дисконнектнувшегося экземпляра? Я так раньше делал модуль обновления софта на клиенте ))): Клиент понимает, что он старый. Копирует модуль "обновлялку" в новое место (что бы саму обновлялку можно было запускать). Запускаем обновлялку и выходим из основной программы. Обновлялка ждет завершение основного процесса (для таких вещей и хочется ID процесса). Софт обновляется (включая обновлялку в основной директории, сами работаем из запасной). Запускаем новую версию софта. ( C ) www.kamis.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 17:10 |
|
Восстановить соединение в Forms
|
|||
---|---|---|---|
#18+
За счет start, по идее, вернет управление сразу. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 17:10 |
|
Восстановить соединение в Forms
|
|||
---|---|---|---|
#18+
-=APS=-, что такое start? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 17:56 |
|
Восстановить соединение в Forms
|
|||
---|---|---|---|
#18+
Команда такая, в Windows. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 18:15 |
|
Восстановить соединение в Forms
|
|||
---|---|---|---|
#18+
в общем, не делает logout только если падает на exception в триггеру WHEN-TIMER-EXPIRED ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 18:21 |
|
Восстановить соединение в Forms
|
|||
---|---|---|---|
#18+
даже так: при обрыве связи не делается logout, соответственно нельзя сделать logon. как бороться? может еще есть возможность отконнектиться от формы? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 19:02 |
|
Восстановить соединение в Forms
|
|||
---|---|---|---|
#18+
свое мнение я уже высказал: кильнуть процесс и запустить по новой. Все остальное - может сработать, а может и нет. Лучше уж тогда с фотоаппаратом по улице ходить и фотографировать встретившихся динозавров. Как известно, вероятность 1/2, или встретишь или нет. А за не фейковую фотку динозавра бабла можно срубить не мало IMHO. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 19:08 |
|
|
start [/forum/topic.php?fid=51&msg=38681049&tid=1878180]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 230ms |
total: | 374ms |
0 / 0 |