W dniu 04.03.2019 14:09, Sylwester Zdanowski napisał(a):
W dniu 04.03.2019, pon o godzinie 13∶22 +0100, użytkownik Tomasz Chiliński napisał:
W dniu 04.03.2019 12:47, Sylwester Zdanowski napisał(a):
Witam,
Witam,
Jeżeli mamy trwającą sesję i wpis w nodesessesions z czasem rozpoczęcia a bez czasu końca. W sesji pokazuje się czas załadowania strony jako czas końcowy i czas trwania na jedną minutę.
Jeżeli z założenia mają być tam tylko sesje zakończone eliminuje to informację o stanie obecnym...
Dodanie w LMS.class.php warunku podstawiającego time() i w nodesessions dodanie if przy stop dało by wynik oddający rzeczywistość.
Pytanie czy można tak zrobić czy jest to celowe?
W jaki sposób na pozycji nodesessions.stop uzyskujesz 0? Skrypty używane w ramach LMS+ zawsze zakładają, że stop jest co najmniej taki jak start, a dodatkowo dostawiają jako stop np. czas komunikatu radius acct. Więc praktycznie sytuacja ze stop=0 w nodesessions praktycznie nie występuje. Moim zdaniem jeśli otrzymujesz komunikat acct to zawsze stop jest co na pewno co najmniej taki jak ostatnio otrzymany komunikat.
Sam musiałem zrobić uzupełnianie, gdzie pole końca mam puste do czasu zakończenia. Z powyższym podejściem przyjmującym datę końcową jako co najmniej datę startu są dwa problemy.
Przyjmowanie czasu startu lub kolejnej aktualizacji za czas końcowy wprowadza w błąd bowiem czasu końca sesji niema. Jeżeli dane są aktualizowane z kilku źródeł do lms co 5 minut(lub więcej) wygląda to jakby sesja się zakończyła. Teoretycznie nie jest to problem w praktyce łatwo o błąd. Trzeba przez pewien czas obserwować aktualizację.
Dodatkowo jeżeli coś spowoduje niemożliwość aktualizacji danych. mając brak końca wiemy, że albo jest podłączony albo jest problem z aktualizacją. Jeżeli mamy ostatni czas aktualizacji będzie to wyglądać jakby komputer się rozłączył niewidoczny będzie problem z aktualizacją danych.
Dodając do tego on-line komputera będziemy mieli niezamkniętą sesję i informację że komputer nie jest już online - od razu widać że coś jest nie tak z aktualizacją danych. Założenie że stop jest ustawiony zawsze maskuje taki problem.
No i dla DHCP stop=start ma akurat sens, bo nie musi pojawić się jakolwiek komunikat DHCP, który wskaże koniec sesji. Ponadto mają od razu ustawiony stop wiemy maksymalnie ile czasu trwała sesja. Dodatkowo jeśli chciałbyś uaktualniać stop sesji tylko, gdy pojawi się wyraźny komunikat to wskazujący to będziesz miał pozostawianych sporo sesji bez określonego czasu zakończenia - wtedy nawet nie da się aproksymować końca sesji. Ustawienie konfiguracyjne phpui.lastonline_limit można wykorzystać do tego, żeby określać czy dana sesja jest online czy nie (względem czasu stop sesji).