|
|
|
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 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
DimaBralekcvpЕсли он 5 минут не водит мышкой над формами приложения и не нажимает никакие кнопки - этого достаточно. Там нет столько информации, чтобы её читать 5 минут не трогая ничего. Бабушка пересчитывает на калькуляторе табличку с экрана, которая автоматически медленно сколируется, и досчитав до середины обнаруживает разрыв соединения. Ибо нефиг ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 12:09 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
DimaBralekcvpЕсли он 5 минут не водит мышкой над формами приложения и не нажимает никакие кнопки - этого достаточно. Там нет столько информации, чтобы её читать 5 минут не трогая ничего. Бабушка пересчитывает на калькуляторе табличку с экрана, которая автоматически медленно сколируется, и досчитав до середины обнаруживает разрыв соединения. А это косяк делфийской архитектуры - при разрыве сразу очищать датасеты. Зачем? Выдал ошибку, дай человеку доделать, досмотреть, доанализировать. Данные-то выгружены. П.С. Лазарус тоже перенял такое поведение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 12:51 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
wadman, это косяк программиста: делать через датасеты, когда надо досмотреть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 13:02 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
Да и датасетов, не сбрасывающих данные, полно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 13:16 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
DimaBrБабушка пересчитывает на калькуляторе табличку с экрана, которая автоматически медленно сколируется, и досчитав до середины обнаруживает разрыв соединения. Мы конкретно про программу из сабжа говорим или про абстрактную в вакууме? В первой нет ни табличек ни бабушек :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 13:51 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
zinpubДа и датасетов, не сбрасывающих данные, полно Для них посредники нужны. Датасет сам по себе жадный до памяти, еще и дублирование... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 13:58 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
wadmanzinpubДа и датасетов, не сбрасывающих данные, полно Для них посредники нужны. Датасет сам по себе жадный до памяти, еще и дублирование... Например ODAC сам умеет, память да, но не надо мульён записей фетчить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 14:09 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
zinpubне надо мульён записей фетчитьименно. нужно довольно много объемных записей чтоб памяти стало не хватать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 14:29 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
wadmanеще и дублированиев grid mode например нет дублирования, условно только пачка того что в экран влазит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 14:30 |
|
||
|
Application Idle Time
|
|||
|---|---|---|---|
|
#18+
КотовасияОбычно в объекте, инкапсулирующем соединение с базой, доступно событие типа "запрос к базе". Ну вот, если приложение обменивалось чем-то с базой в течении последних ххх секунд, оно "активно"так и делаем. и живет оно в отдельном потоке и когда положено рвет соединение с апсервером. и прозрачно его восстанавливает при обращении к нему. порой это позволяет даже вовсе апсерверу закрыться если никто не дергает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 14:33 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2040474]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
189ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 547ms |

| 0 / 0 |
