maciek st
17.11.2005, 14:51:23
Muszę zapisać czas przebywania na stronie zalogowanego użytkownika. Wymyśliłem to tak:
1. w momencie logowania - do zmiennej $_SESSION['czas_logowania'] zapisywany jest jednorazowo aktualny czas (H:M:S).
2. Jeśli użytkownik jest zalogowany
a ) do zmiennej $_SESSION['czas_wylogowania'] za każdym przeładowaniem strony przypisywany jest aktualny czas
b ) w bazie danych za każdym razem aktualizowany jest rekord $_SESSION['czas_logowania'] - $_SESSION['czas_wylogowania']
= w rezultacie mamy rekord logowanie-wylogowanie.
Skrypt mierzy cały czas minus czas jaki użytkownik spędził na ostatniej odsłonie. Dla mnie do przyjęcia.
Pytanie tylko czy nie ma prostszego rozwiązania?
I jeszcze jedno. Wydaje mi się, że za pomocą javascript można zapisać czas zamknięcia przeglądarki? Jak to zrobić?
thx za pomoc
M
smentek
18.11.2005, 01:29:53
No tak ale w ten sposob masz nie tyle czas wylogowania co czas ostatniego przeladowania strony. Ktora moze roznic sie od czasu wylogowania o wiele minut (w zaleznosci od czasu w jakim twoja sesja jest aktualna)
Zauwaz ze to co uzytkownik rozumie jako czas swojej aktywnosci przy twoim serwisie (jego realna praca) nie musi byc tym samym co czas aktywnosci sesji(logowanie - wylogowanie). Uzytkownik moze miec otwarta przegladarke z jakas tam strona www i kozystac z niej nie przeladowujac stron. Mija powiedzmy godzina, user ciagle przeglada strone i w swoim mniemaniu kozysta z serwisu. Dla serwera jednak juz nie istnieje, bo czas sesji minal...
Gdybys tworzyl program w C++ czy javie moglbys stworzyc sobie logowanie jako obiekt ktory istnial by w pamieci przez caly czas dzialania programu. Napisal bys do swojego obiektu konstruktor ktory zapisywal by w bazie czas logowania, oraz destruktor ktory przed zniszczeniem obiektu dokonywal by drugiego wipisu czasu wylogowania.
php dziala zupelnie inaczej czas zycia obiektow ograniczony jest do wykonania sie danego skryptu co trwa milisekundy.
Javascript jest wykonywana na kliencie (przegladarce) i jest jezykiem sluzacym do prezentacji danych. Z tego co wiem nie jest mozliwe odpalenie jakiegokolwiek kodu php podczas samego zamykania przegladarki ktory uruchomil by interpreter php na odleglym serwerze. Dzialanie javascript jest ograniczone do twojej przegladarki tylko, nie wyslesz wiec zadnego polecenia na serwer z twoimi skryptami php.
Zakladajac ze robisz maly serwis to co stworzyles bedzie ok. Jesli jednak bedzie duzo userow musisz pamietac ze takie zapisy do bazy przy kazdym przeladowaniu strony powoduja obciazenie serwera...
Dobre i to co masz. Nic lepszego nie zrobisz.
FiDO
18.11.2005, 13:29:11
Cytat(smentek @ 2005-11-18 01:29:53)
Dzialanie javascript jest ograniczone do twojej przegladarki tylko, nie wyslesz wiec zadnego polecenia na serwer z twoimi skryptami php.
Mozna sie wspomoc AJAX'em. I np. co minute update'owac jakiegos timestamp'a w bazie... Jesli ktos ma np. wylaczone JS to wtedy jest tradycyjnie, czyli ostatni zapisany czas jest czasem ostatniego requesta (wtedy caly czas spedzony na stronie od ostatniego requesta przepada.. ), a jak ktos ma JS i odpowiednio nowa przegladarke to zadziala JS, ktory co minute bedzie robil update.. dokladnosc sie znacznie zwiekszy, ale nie wiem czy jest sens sie w takie cos bawic..
maciek st
19.11.2005, 09:33:25
temat w sumie można podrążyć, bo pomyślałem teraz o flashu.
Co myślicie o wstawieniu jakiegoś flashowego obiektu, który co X czasu będzie zapisywał rzeczoną już parę logowanie-wylogowanie / uruchamiał skrypt php?
Ominę wtedy wszelkie ograniczenia serwera i może być to w miarę proste rozwiązanie.
C++, java nie wchodzi w grę bo nie znam.
Oczywiście wszystko to jest związane z obciążeniem serwera (zapisywanie co chwila) ale to jak sam stwierdziłeś nie powinno byc bardzo uciążliwe przy małym ruchu na serwerze.
wiem jak to napisać ale chciałbym najpierw przedyskutować, bo pewnie nie zauważam jakiegoś ograniczenia, które pokaże się pod koniec realizacji.
A więc:
Co Wy na połączenie flash (uruchamianie skryptu php co jakś czas) + php (zapisywanie pary logowanie - wylogowanie)
?
ghostrider
19.11.2005, 12:28:26
mogę się mylić, ale kiedys (dawno) coś takiego zrobiłem na flashu przez getURL
i ktoś po jakiś czasie zauważył ze komputer 'clicka', tzn wydaje dzwiek jak przy kilkaniu linka kiedy wywoływałem getURL, i to bylo denerwujące, ja nie małem wtedy głośników, zresztą dalej nie mam.
NIedawno postowałem tutaj funkcje JS, pozwalajaca na wykonywanie skryptu php bvez odswierzania strony, make_contact sie to nazywało, moze się przyda
maciek st
19.11.2005, 13:26:02
można to zrobić przez LOADVARS - chyba nie będzie klikania.
Ale to już chyba dyskusja na innym forum.
(Jak mi się uda zrobić w ten sposób to się podzielę).
"make_contact" nie znalazłem na forum.
Możesz mnie jakoś naprowadzić?
Dzięki
M
ghostrider
19.11.2005, 13:29:35
maciek st
19.11.2005, 13:54:10
thx wielkie, pobawię się z tym.
Jak zrobię mój pomysł z flashem to wystawię - może komuś się przyda.
Dzięki jeszcze raz.
PZDR
M
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.