Monitorowanie wartości znajdującej się w bazie mySql

Odpowiedz Nowy wątek
2016-10-12 17:46

Rejestracja: 8 lat temu

Ostatnio: 1 miesiąc temu

0

Hej :)
Istnieje jakiś sposób, aby wyłapywać zmianę wartości jakiegoś rekordu w mySql? Bo mógłbym utworzyć timer i czytać tą wartość, ale może jest jakieś lepsze rozwiązanie?

Pozostało 580 znaków

2016-10-12 17:51
Moderator

Rejestracja: 12 lat temu

Ostatnio: 1 godzina temu

Lokalizacja: Wrocław

1

Są niby triggery, ale lepiej po prostu powiedz, co chcesz osiągnąć.


Pozostało 580 znaków

2016-10-12 17:53

Rejestracja: 6 lat temu

Ostatnio: 9 miesięcy temu

0

Dodaj kolumnę do tabeli gdzie będziesz przechowywać czas ostatniego update'u. Zrób triggera w bazie, który będzie się odpalał przy każdym update'cie tabeli, a w C# zrób timer, w którym będziesz obserwować zmianę daty i już.

Pozostało 580 znaków

2016-10-12 17:59

Rejestracja: 8 lat temu

Ostatnio: 1 miesiąc temu

0

Wartości bool w bazie danych:
flaga1 - ktoś jest zalogowany na konto true/false
flaga2 - Obecnie zalogowany uzytkownik ma się natychmiast wylogować true/false

  1. Geneza jest taka, że jak ktoś się zaloguje na dane konto flaga1 zmienia się na true.
  2. Jeżeli ktoś inny będzie się próbował zalogować na to samo konto wtedy flaga sygnalizująca potrzebę wylogowania się ustawia na true.
  3. Uzytkownik aktualnie zalogowany otrzymuje komunikat, że ma się wylogować, a drugi uzytkownik obserwuje tą zmienną i oczekuje na pierwszą flagę aż będzie false (czyli że może się zalogować).
edytowany 2x, ostatnio: gswidwa, 2016-10-12 18:01

Pozostało 580 znaków

2016-10-12 18:10

Rejestracja: 6 lat temu

Ostatnio: 9 miesięcy temu

Wszystkie trzy punkty da się bardzo ładnie obrobić na poziomie aplikacji.

Ad 1 - Zwyczajnie ustawiasz flagę na true jeżeli użytkownik podał prawidłowe dane logowania;
Ad 2 - Jeżeli flaga1 użytkownika jest ustawiona na true i zostały wpisane prawidłowe dane logowania to idzie update ustawiający flagę2 na true;
Ad 3 - Robisz timer sprawdzający flagi i robiący różne rzeczy w zależności od tego co chcesz osiągnąć.

Nawet triggerów pisać nie musisz do tego. Samo sprawdzanie flag można zrobić prostym SELECT'tem.

BTW: to trochę bez sensu. Nie pozwalasz użytkownikowi zalogować się z kilku miejsc jednocześnie. Lepiej robić tabelę w relacji Jeden użytkownik kilka sesji i tam przechowywać aktywne sesje.

edytowany 3x, ostatnio: grzesiek51114, 2016-10-12 18:14
ad nie jest skrótem, zatem bez kropki - Patryk27 2016-10-12 18:12
@Patryk27 człowiek uczy się całe życie :) - grzesiek51114 2016-10-12 18:13
Czyli Timer :D Dzięki wielkie :) - gswidwa 2016-10-12 20:39

Pozostało 580 znaków

2016-10-12 20:40

Rejestracja: 8 lat temu

Ostatnio: 1 miesiąc temu

0

Co masz na myśli mówiąc aktywne sesje? trzymać ID zalogowanych użytkowników w oddzielnej tabeli?

Pozostało 580 znaków

2016-10-12 20:51

Rejestracja: 6 lat temu

Ostatnio: 9 miesięcy temu

1

Plus np. czas zalogowania etc... Tylko będziesz musiał stworzyć mechanizm zarządzania np. zerwanymi sesjami, reconnectami i w ogole. Oczywiście w zakresie jaki jest potrzebny. Twoja wola jaki stopień zarzadzania zrobisz.

Możesz przy pierwszym logowaniu rozdawać id sesji z czasem trwania. Jak klient zerwie sesję i podłączy sie ponownie to po tym id zapadnie decyzja czy sesję zerwać, bo jest po terminie czy np. trzymać dłużej z wszystkimi tego ficzerami jakie zaproponujesz klientom :-)

A przedawnione czy zakończone sesje możesz logować i będziesz miał ładną historię dostępu.

edytowany 2x, ostatnio: grzesiek51114, 2016-10-12 20:54
Ahh to czeka mnie sporo pracy. A wyglądało to juz tak pięknie :D Myślałem, że istnieje coś w rodzaju bindingu zmiennej z rekordem :D - gswidwa 2016-10-13 22:32

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0