Фиксация времени дисконнекта

Док
Дата: 27.07.2012 16:44:03
Для служебных целей необходимо записывать каждому юзеру время дисконнекта с базой. Где это лучше делать: на сервере в триггере или на клиенте?

Хотелось бы учитывать и ситуацию с падением сервера или элементарным обрывом коннекта.
=================
Док.

FB 2.1.4 18393, диалект 3, SS(многопольз.), FIB+ 7.1, DXE/IBExpert
oleg_m
Дата: 27.07.2012 16:50:14
Док
учитывать и ситуацию с падением сервера

не уверен, что есть такой триггер, который сработает при падении

... а было бы интересно "ON CRASH "

Док
или элементарным обрывом коннекта.

при обрыве коннекта? тогда куда эту информацию записывать?
в локальный лог на машине юзера?
Док
Дата: 27.07.2012 16:55:32
oleg_m,

То есть писать можно, но при условии корректного завершения коннекта?
oleg_m
Дата: 27.07.2012 17:01:06
Док, все перечисленные тобой ситуации нельзя запротоколировать только на сервере или только на клиенте.

Триггер на DISCONNECT почти во всех ситуациях, в т.ч. сработает при обрыве сети.
Но сложно на него рассчитывать при падении самого сервера.
Док
Дата: 27.07.2012 17:08:26
oleg_m,

Интересно, а зафиксировать время коннекта, а затем писать в соседнее поле текущее время сервера через определенные промежутки времени будет по феншую? ;)
Dimitry Sibiryakov
Дата: 27.07.2012 17:39:50

Док
зафиксировать время коннекта, а затем писать в соседнее поле текущее время сервера через
определенные промежутки времени будет по феншую? ;)

Это будет по-медициски: вызывать к себе время от времени человека, чтобы посмотреть не
отросла ли ему новая нога.

Posted via ActualForum NNTP Server 1.5

Гаджимурадов Рустам
Дата: 27.07.2012 18:06:14

Док> Где это лучше делать: на сервере в триггере или на клиенте?

И там, и там. При запуске синхронизировать.

Posted via ActualForum NNTP Server 1.5

Таблоид
Дата: 27.07.2012 18:48:40
Док
Для служебных целей необходимо записывать каждому юзеру время дисконнекта с базой. Где это лучше делать: на сервере в триггере или на клиенте?

Хотелось бы учитывать и ситуацию с падением сервера или элементарным обрывом коннекта.
Отследить ситуацию с падением сервера, а также с отрубанием коннектов по delete from mon$attachments, а также с переводом базы в оффлайн (gfix -shut full -force 0), - не получится. Триггера database-уровня *не* срабатывают при этих событиях.
Вот некоторые исследования на эту тему: раз, два.
Гаджимурадов Рустам
Дата: 27.07.2012 18:52:52

Какие вы забавные... Вам же говорят - И на сервере, И на клиенте.
Такой вариант помрёт только если И помрёт коннект (или сервер),
И клиентская чать не сможет/не успеет это обработать.

Поскольку последнее (обработка) зависит только от прикладного
программиста, то "всё в ваших руках", как говорится.

Posted via ActualForum NNTP Server 1.5

Таблоид
Дата: 27.07.2012 18:59:24
Док
зафиксировать время коннекта, а затем писать в соседнее поле текущее время сервера через определенные промежутки времени будет по феншую? ;)
Пусть клиентское приложение обращается раз к серверу 6 раз в минуту, из которых только 1 раз дёргает время, а в остальные 5 - select 1 from rdb$database. На сегодняшний день это 5 фетчей на каждый такой запрос.
Если ошибки не произошло, то логировать каждый раз этот факт можно не на сервере (ибо нефиг его отвлекать всякой ерундой), а где-нибудь в C:\TEMP\successful_connect_to_firebird.log клиентской машины, средствами приложения.
Как только случилась ошибка, удалить этот самый C:\TEMP\successful_connect_to_firebird.log и создать вместо него C:\TEMP\error_connect_to_firebird.log, содержимое которого при восстановлении коннекта к базе надо перекатать в базу.