![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 20 Dołączył: 19.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jak zrobić żeby po wyłączeniu przeglądarki znikały osoby online. Mam kod, w którym gość robi dokładnie to co ja i jemu się udaje a mi nie działa ;(
oto feralny kod: session_start(); $session_path=session_save_path(); $visitors=0; $handle=opendir($session_path); while(($file=readdir($handle))!=FALSE) { if($file!="." && $file!="..") { if(ereg("^sess",$file)) $visitors++; } } echo "online:$visitors"; Ten post edytował poli25 9.11.2010, 09:12:46 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 8 Dołączył: 30.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
O proszę, nigdy bym nie wpadł, żeby liczyć to w ten sposób (IMG:style_emoticons/default/winksmiley.jpg)
długość życia tych plików określany jest w php.ini przez opcję session.gc_maxlifetime Jeśli nie masz możliwości tego zmienić, to zapisuj coś do sesji przy każdym przeładowaniu strony. Przy obliczaniu ilości osób online, odczytuj czas modyfikacji pliku i jeśli starszy od np. 5 minut to go nie licz. Jednak przy większej ilości użytkowników polecałbym mimo wszystko bazę danych. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 20 Dołączył: 19.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 8 Dołączył: 30.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Hmm, może coś w ten deseń, choć pewnie da się prościej - jakiś niewyspany jestem (IMG:style_emoticons/default/winksmiley.jpg) :
Tworzysz tabelkę users_online z 2 polami: user_id (integer, auto_increment) oraz time (integer).
To tak na szybko pisane, ale mam nadzieję, że łapiesz idee. Należałoby oczywiście opakować w jakąś ładną klasę, dodać buforowanie w sesji, bo bez sensu kasowanie i pobieranie co odświeżenie. edit: Już widzę błąd, powyższy kod nie policzy osoby, której sesja nie zdążyła wygasnąć, a już została skasowana z bazy, więc musiałbyś i to sprawdzać, może jednak pierwszy pomysł był lepszy (IMG:style_emoticons/default/tongue.gif) Ten post edytował norbis 9.11.2010, 10:15:05 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 20 Dołączył: 19.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
wiesz próbowałem zmienic czas w php.ini tam było 1440 zmieniłem na 120 ale nadal po tym czasie nie znikają sesje po tym czasie ;( w ogóle to katalog musialem mu wskazać bo nie widział zmieniłem :
$session_path=session_save_path('sesje/'); session_start(); $session_path=session_save_path(); $visitors=0; $handle=opendir($session_path); $pattern='/^sess/'; while(($file=readdir($handle))!=FALSE) { if($file!="." && $file!="..") { if(preg_match($pattern,$file)) $visitors++; } } echo $visitors; ale nadal nie kasuje mam w katalogu sesje ale nie znikaja |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 8 Dołączył: 30.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chcesz używać sesji do czegoś innego niż liczenie osób online, to 2 minuty to za mało, spróbuj raczej tak jak pisałem:
I przy okazji, uprość sobie życie i korzystaj z możliwości PHP5 - poczytaj o funkcji scandir (IMG:style_emoticons/default/winksmiley.jpg) Ten post edytował norbis 9.11.2010, 11:13:06 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 20 Dołączył: 19.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
tak to je to tego mi brakowało (IMG:style_emoticons/default/winksmiley.jpg) serdeczne dzięki (IMG:style_emoticons/default/winksmiley.jpg)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 10:50 |