|
|
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
Всем привет! Один из заказчиков хочет, чтобы фиксировалось время входа и выхода из системы на apex 4.2. Дату и время входа смотрим по WWV_FLOW_SESSIONS$. В данной таблице не фиксируется дата выхода/конца сессии. Там только есть поле LAST_CHANGED, которое почему-то равно дате старта сессии. Дату выхода на logout мы повесить не можем, так как 90% юзеров просто закрывают окно браузера. Поэтому вопрос: как-нибудь можно определить дату и время конца сессии - если нажали на логаут то дату нажатия, если сессия закрылась по бездействию, то дата окончания периода бездействия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 17:20 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
electrod, повесить таймер на JS. На событие мыши обнулять. Пусть пользователи поругаются на любопытного начальника). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 00:01 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
Petro123, нагрузка мне кажется большая будет, если аяксом каждое событие (например click) передавать на апдейт БД... может есть другие средства?)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 01:41 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
electrod, 1) Создается/используете имеющуюся таблицу юзеров - имя / дата активности. 2) На нулевой странице создаете pl/sql регион. В нем обновляете дату активности у юзера. Минусы: если страница сделана полностью на аяксах (что маловероятно), то регион отработает только при первой загрузке страницы. Или все же раз в 5/10/15 минут таки слать аякс на тот же апдейт. Еще где-то мелькало вариант. База сама ломится на клиент и проверяет. Сделано через node.js и чего-то там еще, в общем сложное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 07:31 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
electrod, А ты как хотел? Потому что, то что хочет заказчик дорого и решается на десктоп или Java. Слежка за своими клиентами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 08:02 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
В java есть событие конца сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 08:06 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
Забыл. У Apex ведь есть листнер с java. Значит, решаемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 08:30 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
Petro123Забыл. У Apex ведь есть листнер с java. Значит, решаемо. А если листенера нет? :) OHS установлен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 11:22 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
blkangel, что такое OHS ?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 11:32 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
electrodblkangel, что такое OHS ?) OHS - Oracle HTTP Server, проще говоря Apache заточенный ораклом под себя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 11:34 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
Petro123, если двигаться в сторону фиксирования сессий в листнере, с чего хотя бы начать? исходников у него нет, как java спалит, что сессия началась и под каким она номером? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 11:36 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
Gustlyelectrod, 2) На нулевой странице создаете pl/sql регион. В нем обновляете дату активности у юзера. Минусы: если страница сделана полностью на аяксах (что маловероятно), то регион отработает только при первой загрузке страницы. Или все же раз в 5/10/15 минут таки слать аякс на тот же апдейт. Еще где-то мелькало вариант. База сама ломится на клиент и проверяет. Сделано через node.js и чего-то там еще, в общем сложное решение. А разве в апексе это не сделано? Апекс следит за последним действием пользователя. electrod, Administration/Monitor activity Не пойдет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 11:46 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
blkangel, не нашел служебные таблицы, в которых это ведется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 11:47 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
electrodкак java спалит, что сессия началась и под каким она номером? https://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpSessionListener.html Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. у меня перед APEX GlassFish (томкат) - перед запросами стоит и может всё контролировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 12:15 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
electrodblkangel, не нашел служебные таблицы, в которых это ведется... я подглядел в приложение 4350, используется таблица или представление WWV_FLOW_ACTIVITY_LOG, но обратится к ней не смог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 12:34 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
blkangel, Спасибо! Работает - из system-a получилось - select * from APEX_040200.WWV_FLOW_ACTIVITY_LOG ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 13:14 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
electrod, Не найду, где там метка конца сессии или выхода из приложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 19:52 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
Petro123, мы смотрим по максимальной дате последнего действия еще можно определить что сессия кончилась по тому, что ее нет в таблице APEX_040200.WWV_FLOW_SESSIONS$, но там как то подозрительно много сессий есть (возможно там хранятся просто все сессии за день, не только активные) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 20:12 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
electrod, оба варианта не катят, если пользователь работал по AJAX. - не перегружал страницу, работал целый день и вышел крестиком на окне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 12:29 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
electrod, 1) Как говорил Petro123 повесить обработчик на клик мышкой, но не отсылать данные сразу а накапливать в датасторедже самого браузера, отсылать с некоей периодичностью. 2) На событие закрытия окна повесить обработчик, который на пару секунд будет задерживать выход из браузера и отсылать не отосланные данные по кликам. Если окно с задержкой будет не навязчивым, врядли это сподвигнет пользователя обрубать процесс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 12:44 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
Есть более лаконичное решение - повесить ajax-запрос с обновленеи записи окончания сессии на событие onunload для тега body. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 12:52 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
kasik, Если убить процесс браузера, не поможет. Через закрытие браузера, а не вкладки возможно тоже. Хотя 2-е надо пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 13:18 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
GustlyЕсли убить процесс браузера, не поможет. Я бы не заморачивался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 13:30 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
CasufiGustlyЕсли убить процесс браузера, не поможет. Я бы не заморачивался. +1 против лома нет приёма. Если событие JS работает на крест, то это достаточно. Встроенных в APEX среств нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 14:05 |
|
||
|
Как зафиксировать время работы пользователя внутри сессии
|
|||
|---|---|---|---|
|
#18+
electrod, Можно job-ом опрашивать состояние apex_workspace_sessions, писать в какую-нибудь свою табличку А по поводу закрытия браузера, есть Maximum Session Length in Seconds / Maximum Session Idle Time in Seconds которые так же доступны в apex dictionary ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 16:22 |
|
||
|
|

start [/forum/topic.php?fid=50&msg=38810529&tid=1875168]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
152ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 434ms |

| 0 / 0 |
