Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Как зафиксировать время работы пользователя внутри сессии / 25 сообщений из 35, страница 1 из 2
17.11.2014, 17:20
    #38808601
electrod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
Всем привет!

Один из заказчиков хочет, чтобы фиксировалось время входа и выхода из системы на apex 4.2.

Дату и время входа смотрим по WWV_FLOW_SESSIONS$. В данной таблице не фиксируется дата выхода/конца сессии. Там только есть поле LAST_CHANGED, которое почему-то равно дате старта сессии.

Дату выхода на logout мы повесить не можем, так как 90% юзеров просто закрывают окно браузера.
Поэтому вопрос: как-нибудь можно определить дату и время конца сессии - если нажали на логаут то дату нажатия, если сессия закрылась по бездействию, то дата окончания периода бездействия?
...
Рейтинг: 0 / 0
18.11.2014, 00:01
    #38808941
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
electrod,
повесить таймер на JS. На событие мыши обнулять.
Пусть пользователи поругаются на любопытного начальника).
...
Рейтинг: 0 / 0
18.11.2014, 01:41
    #38808978
electrod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
Petro123,

нагрузка мне кажется большая будет, если аяксом каждое событие (например click) передавать на апдейт БД... может есть другие средства?))
...
Рейтинг: 0 / 0
18.11.2014, 07:31
    #38809024
Gustly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
electrod,

1) Создается/используете имеющуюся таблицу юзеров - имя / дата активности.
2) На нулевой странице создаете pl/sql регион. В нем обновляете дату активности у юзера.

Минусы: если страница сделана полностью на аяксах (что маловероятно), то регион отработает только при первой загрузке страницы.

Или все же раз в 5/10/15 минут таки слать аякс на тот же апдейт.

Еще где-то мелькало вариант. База сама ломится на клиент и проверяет.

Сделано через node.js и чего-то там еще, в общем сложное решение.
...
Рейтинг: 0 / 0
18.11.2014, 08:02
    #38809035
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
electrod,
А ты как хотел?
Потому что, то что хочет заказчик дорого и решается на десктоп или Java.
Слежка за своими клиентами.
...
Рейтинг: 0 / 0
18.11.2014, 08:06
    #38809037
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
В java есть событие конца сессии.
...
Рейтинг: 0 / 0
18.11.2014, 08:30
    #38809047
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
Забыл. У Apex ведь есть листнер с java. Значит, решаемо.
...
Рейтинг: 0 / 0
19.11.2014, 11:22
    #38810482
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
Petro123Забыл. У Apex ведь есть листнер с java. Значит, решаемо.
А если листенера нет? :) OHS установлен.
...
Рейтинг: 0 / 0
19.11.2014, 11:32
    #38810499
electrod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
blkangel,
что такое OHS ?)
...
Рейтинг: 0 / 0
19.11.2014, 11:34
    #38810501
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
electrodblkangel,
что такое OHS ?)
OHS - Oracle HTTP Server, проще говоря Apache заточенный ораклом под себя.
...
Рейтинг: 0 / 0
19.11.2014, 11:36
    #38810504
electrod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
Petro123,

если двигаться в сторону фиксирования сессий в листнере, с чего хотя бы начать?
исходников у него нет, как java спалит, что сессия началась и под каким она номером?
...
Рейтинг: 0 / 0
19.11.2014, 11:46
    #38810527
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
Gustlyelectrod,

2) На нулевой странице создаете pl/sql регион. В нем обновляете дату активности у юзера.

Минусы: если страница сделана полностью на аяксах (что маловероятно), то регион отработает только при первой загрузке страницы.

Или все же раз в 5/10/15 минут таки слать аякс на тот же апдейт.

Еще где-то мелькало вариант. База сама ломится на клиент и проверяет.

Сделано через node.js и чего-то там еще, в общем сложное решение.
А разве в апексе это не сделано? Апекс следит за последним действием пользователя.

electrod, Administration/Monitor activity Не пойдет?
...
Рейтинг: 0 / 0
19.11.2014, 11:47
    #38810529
electrod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
blkangel,

не нашел служебные таблицы, в которых это ведется...
...
Рейтинг: 0 / 0
19.11.2014, 12:15
    #38810585
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
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.
public class ServletSessionListener implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println("\nсессия создана " + se.getSession().getId());
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println("\nсессия закрыта" + se.getSession().getId());
    }


у меня перед APEX GlassFish (томкат) - перед запросами стоит и может всё контролировать
...
Рейтинг: 0 / 0
19.11.2014, 12:34
    #38810622
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
electrodblkangel,

не нашел служебные таблицы, в которых это ведется...
я подглядел в приложение 4350, используется таблица или представление WWV_FLOW_ACTIVITY_LOG, но обратится к ней не смог.
...
Рейтинг: 0 / 0
19.11.2014, 13:14
    #38810685
electrod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
blkangel,

Спасибо! Работает - из system-a получилось - select * from APEX_040200.WWV_FLOW_ACTIVITY_LOG
...
Рейтинг: 0 / 0
28.11.2014, 19:52
    #38819985
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
electrod,
Не найду, где там метка конца сессии или выхода из приложения?
...
Рейтинг: 0 / 0
28.11.2014, 20:12
    #38819992
electrod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
Petro123,

мы смотрим по максимальной дате последнего действия

еще можно определить что сессия кончилась по тому, что ее нет в таблице APEX_040200.WWV_FLOW_SESSIONS$, но там как то подозрительно много сессий есть (возможно там хранятся просто все сессии за день, не только активные)
...
Рейтинг: 0 / 0
01.12.2014, 12:29
    #38821276
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
electrod,
оба варианта не катят, если пользователь работал по AJAX.
- не перегружал страницу, работал целый день и вышел крестиком на окне.
...
Рейтинг: 0 / 0
01.12.2014, 12:44
    #38821289
Casufi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
electrod,

1) Как говорил Petro123 повесить обработчик на клик мышкой, но не отсылать данные сразу а накапливать в датасторедже самого браузера, отсылать с некоей периодичностью.
2) На событие закрытия окна повесить обработчик, который на пару секунд будет задерживать выход из браузера и отсылать не отосланные данные по кликам.

Если окно с задержкой будет не навязчивым, врядли это сподвигнет пользователя обрубать процесс.
...
Рейтинг: 0 / 0
01.12.2014, 12:52
    #38821293
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
Есть более лаконичное решение - повесить ajax-запрос с обновленеи записи окончания сессии на событие onunload для тега body.
...
Рейтинг: 0 / 0
01.12.2014, 13:18
    #38821321
Gustly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
kasik,

Если убить процесс браузера, не поможет. Через закрытие браузера, а не вкладки возможно тоже. Хотя 2-е надо пробовать.
...
Рейтинг: 0 / 0
01.12.2014, 13:30
    #38821339
Casufi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
GustlyЕсли убить процесс браузера, не поможет.
Я бы не заморачивался.
...
Рейтинг: 0 / 0
01.12.2014, 14:05
    #38821367
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
CasufiGustlyЕсли убить процесс браузера, не поможет.
Я бы не заморачивался.
+1 против лома нет приёма.
Если событие JS работает на крест, то это достаточно.
Встроенных в APEX среств нет.
...
Рейтинг: 0 / 0
01.12.2014, 16:22
    #38821546
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зафиксировать время работы пользователя внутри сессии
electrod,

Можно job-ом опрашивать состояние apex_workspace_sessions, писать в какую-нибудь свою табличку
А по поводу закрытия браузера, есть Maximum Session Length in Seconds / Maximum Session Idle Time in Seconds
которые так же доступны в apex dictionary
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Как зафиксировать время работы пользователя внутри сессии / 25 сообщений из 35, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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