|
|
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
Как грамотно реализовать сабж? Суть проста: требуется чтобы приложение, если пользователь не совершает с ним активных действий, через минут 10 само отключалось от сервера БД. На данный момент придумал сделать счётчик, который увеличивается по таймеру на 1 каждую секунду, по достижении значения в 600 - отключаемся. Если в Application.OnMessage приходит WM_MOUSE* или WM_KEY* сообщение, то счётчик обнуляется. Но, возможно, есть более грамотный подход? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 18:03 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
В сервере БД настраивается время жизни подключения простоя... и в строке подключения вроде бы тоже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 18:22 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
X-CiteВ сервере БД настраивается время жизни подключения простоя... и в строке подключения вроде бы тоже...Простой соединения с БД и простой GUI - разные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 18:23 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
Хотя в FireDAC в его Pooling'е как раз так и реализовано... Есть таймаут не бездействие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 18:23 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
alekcvpНо, возможно, есть более грамотный подход?Таймер на 600 сек. При необходимости - продляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 18:24 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
1. Устанавливаем время последней активности в 0. 2. Запускаем таймер на 10 минут. 3. При приходе сообщений обновляем время последней активности текущим временем 4. При срабатывании таймера проверяем, сколько прошло времени с момента последней активности. Если больше 10 минут, то рвем соединение. Если меньше, то запускаем таймер на оставшееся время и переходим к пункту 3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 19:26 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
alekcvp, можно по таймеру вызывать функцию Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 19:58 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, туплю, если для конкретного приложения, то не подойдет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 20:08 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
Код: pascal 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. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 21:22 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, А в чём плюс перед Application.OnMessage?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 22:19 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
alekcvpAleksandr Sharahov, А в чём плюс перед Application.OnMessage?.. В принципе равноценно. Есть пара небольших плюсов: 1. У меня OnMessage и так перегружен другой работой - а тут функциональное разделение. 2. Через код возврата в хуках можно блокировать любой ввод пользователя на время выполнения команды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 22:41 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
alekcvpAleksandr Sharahov, А в чём плюс перед Application.OnMessage?..Тем что можно просто заюзать модуль и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 22:52 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
alekcvpесли пользователь не совершает с ним активных действий Как определить что пользователь НЕ СОВЕРШАЕТ активных действий ? Если бухгалтер сравнивает данные с картинкой на экране, при этом не двигает мышкой а пересчитывает данные на калькуляторе, она совершает активные действия ? Или открыла Косынку и перекладывает картишки, то совершает активные действия ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 07:47 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
DimaBralekcvpесли пользователь не совершает с ним активных действий Как определить что пользователь НЕ СОВЕРШАЕТ активных действий ? Если бухгалтер сравнивает данные с картинкой на экране, при этом не двигает мышкой а пересчитывает данные на калькуляторе, она совершает активные действия ? Или открыла Косынку и перекладывает картишки, то совершает активные действия ? Обычно в объекте, инкапсулирующем соединение с базой, доступно событие типа "запрос к базе". Ну вот, если приложение обменивалось чем-то с базой в течении последних ххх секунд, оно "активно". Иначе - юзер балуется. Например. ... А зачем сие вообще надо? Попытка сэкономить на лицензиях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 08:24 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
Ну вот, если приложение обменивалось чем-то с базой в течении последних ххх секунд, оно "активно".В приложении может работать к-л таймер с зачиткой с базы. Н-р зачитка информационных сообщений пользователям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 09:17 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
КотовасияА зачем сие вообще надо? Попытка сэкономить на лицензиях? В целях безопасности. Приложение хранит логины/пароли к сервисам, некоторые, не особо ответственные товарищи, посмотрев нужное оставляют его открытым - подходи кто хочешь, смотри что хочешь. Хочу сделать таймаут минут 5-10, если не смотришь в приложение, то оно от базы отключается и надо логиниться заново. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 09:59 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
Повторяю, как определить что пользователь не работает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 10:08 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
DimaBr, достаточно хайли лайкли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 10:11 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
DimaBrИли открыла Косынку и перекладывает картишки, то совершает активные действия ? Тогда инпут в программу и не придет. По сабжу - нормальная идея. Я бы тоже сделал через App.OnMessage. Но вообще неплохо бы протестировать нововведение "на кошках". Потому что если в программе не зависают ежесекундно, а обращаются время от времени, разлогин через 10 минут будет жутко бесить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 10:12 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
DimaBrПовторяю, как определить что пользователь не работает ? Если он 5 минут не водит мышкой над формами приложения и не нажимает никакие кнопки - этого достаточно. Там нет столько информации, чтобы её читать 5 минут не трогая ничего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 10:15 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
Василий 2 Потому что если в программе не зависают ежесекундно, а обращаются время от времени, разлогин через 10 минут будет жутко бесить. Я думаю он будет бесить меньше, чем проблемы в случае утечки на сторону конфиденциальных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 10:17 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
Василий 2разлогин через 10 минут будет жутко бесить Это можно регулировать опционально. В одном МИСе, с которым мне приходилось работать , приклада вообще закрывалась после 20 мин простоя (т.е., если ты не двигал мышом при ее активном главном окне). По сабжу, а нельзя административно просто настроить скринсейвер юзеру, чтобы требовал пароль при повторном входе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 10:22 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
alekcvpЕсли он 5 минут не водит мышкой над формами приложения и не нажимает никакие кнопки - этого достаточно. Там нет столько информации, чтобы её читать 5 минут не трогая ничего. Бабушка пересчитывает на калькуляторе табличку с экрана, которая автоматически медленно сколируется, и досчитав до середины обнаруживает разрыв соединения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 11:37 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
у нас сделано на AppOnMessage примерно так: if (Msg.Message = WM_CHAR) or (Msg.Message = WM_KEYDOWN) or (Msg.Message = WM_KEYUP) or (Msg.Message = WM_SYSCHAR) or (Msg.Message = WM_SYSKEYDOWN) or (Msg.Message = WM_SYSKEYUP) or (Msg.Message = WM_MOUSEACTIVATE) or (Msg.Message = WM_MOUSEWHEEL) or (Msg.Message = WM_LBUTTONDOWN) or (Msg.Message = WM_RBUTTONDOWN) then tmrIdle.Enabled := false; но обрубаем коннекты по таймеру только после "окончания рабочего дня". чтоб не болтались бесхозные коннекты когда нужно провести регламентные работы. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 11:43 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
DimaBralekcvpЕсли он 5 минут не водит мышкой над формами приложения и не нажимает никакие кнопки - этого достаточно. Там нет столько информации, чтобы её читать 5 минут не трогая ничего. Бабушка пересчитывает на калькуляторе табличку с экрана, которая автоматически медленно сколируется, и досчитав до середины обнаруживает разрыв соединения. "Ничего, сынок, я тебе в курилке уже на спину плюнула" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 11:50 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=98&tid=2040474]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
21ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 343ms |

| 0 / 0 |
