Na stronie jest xxx użytkowników online

0

Jak sprawdzić ilu jest zalogowanych użytkowników jeśli logowanie opiera się na sesjach?

0

po zalogowaniu ustaw w bazie przy uzytkowniku np. kolumne logged, w ktorej bedziesz trzymal czas ostatniej interakcji usera z serwisem, potem wystarczy zliczyc wszystkich, u ktorych te daty sa wieksze niz aktualny czas- na przyklad 5 minut

0

Dzięki, ciekawe rozwiązanie.

0
ZQ napisał(a)

Dzięki, ciekawe rozwiązanie.

Albo manual do PHP -> session_set_save_handler()
Znacznie skuteczniejsze - bez 5 minutowej niepewnosci :)

0

so ? co ta funkcja ma w ogóle wspólnego ? zawsze musi być jakiś czas "niepewności" bo php nie jest w stałym kontakcie z userem, chyba że na js to zrobisz utrzymywanie kontaktu, a to też nie masz pewności

0
Adamo napisał(a)

so ? co ta funkcja ma w ogóle wspólnego

Odsylam do manuala :)

0
Shreq napisał(a)

bez 5 minutowej niepewnosci :)

od kiedy sesja jest niszczona wraz z zamknięciem okna przeglądarki? Czas 5 minut podalem przykladowy - wazne, zeby co minimum 5 minut cos user na stronie robil... I jeszcze jedno - przy wylogowywaniu ustaw ta kolumne na 0!

0
tomkiewicz napisał(a)
Shreq napisał(a)

bez 5 minutowej niepewnosci :)

od kiedy sesja jest niszczona wraz z zamknięciem okna przeglądarki? Czas 5 minut podalem przykladowy - wazne, zeby co minimum 5 minut cos user na stronie robil... I jeszcze jedno - przy wylogowywaniu ustaw ta kolumne na 0!

http://pl2.php.net/manual/pl/function.session-set-save-handler.php
Generalnie - z sesji sie z reguly korzysta, mozna to nawet zupelnie zautomatyzowac. Rozwiazanie ktore podalem ma te przewage ze mozna wykorzystac cos, co sie i tak wpycha w kod.

0
Shreq napisał(a)
Adamo napisał(a)

so ? co ta funkcja ma w ogóle wspólnego

Odsylam do manuala :)

co ty za pierdoły pociskasz ? ta funkcja jest do zastąpienia automatycznej obsługi sesji - tyle, jeśli ci chodzi o to że nie będzie trzeba już nic więcej zapisywać nigdzie, tylko będzie wystarczyć policzenie sesji no to się zgadzam, ale "czas niepewności" dalej jest i ta funkcja już nie ma z tym nic wspólnego

0
Adamo napisał(a)

co ty za pierdoły pociskasz ? ta funkcja jest do zastąpienia automatycznej obsługi sesji - tyle, jeśli ci chodzi o to że nie będzie trzeba już nic więcej zapisywać nigdzie, tylko będzie wystarczyć policzenie sesji no to się zgadzam, ale "czas niepewności" dalej jest i ta funkcja już nie ma z tym nic wspólnego

Honey
Nareszcie zajarzyles o co mi chodzilo :)
Co do czasu niepewnosci - wypadlo przy redagowaniu postu. Jak wykorzysta sie dodatkowe biblioteki do obslugi polaczen z MySQL-em oraz protokolu HTTP - nie bedzie 5 min. Mala podpowiedz: jak dlugo polaczenie HTML jest uwazane za otwarte po zamknieciu przegladarki? Jak dlugo MySQL lub inna baza trzyma zadanie otwarcia polaczenia do bazy danych? :D Wiecej podpowiedzi nie bedzie :)

0

podpowiedzi ? honey ? idę stąd
sam nie wiesz o czym piszesz
EOT był 9 postów temu

0
Shreq napisał(a)

Mala podpowiedz: jak dlugo polaczenie HTML jest uwazane za otwarte po zamknieciu przegladarki?

[rotfl] Proponuje panu gumisie zamiast programowania.

Taki licznik mozna zrobic jedynie przy pomocy zliczania ilu roznych klientow (ip, jakis sid czy jak tam sie ich bedzie identyfikowac) weszlo na strone w ciagu kilku ostatnich minut, w dobie roznych ajaxow i innych pierdół mozna oczywiscie ten czas zmniejszyc do kilku sekund i co chwile wysylac jakies zadanie bez ingerencji uzytkownika ale sens takiego rozwiazania jest znikomy.

0

Shreq ubzdurałeś sobie coś.. widać sam nie wiesz jak działa http.

Co ma do tego otwarcie bazy danych i "połączenie html" (lol!) ?

ZQ nie słuchaj go, innego sposobu niż ten co podał Adamo nie ma, kwestia teraz jak dobrze to zaimplentujesz.

//sorry.. Tomkiewicz

0

raczej niż ten co podał tomkiewicz ;)

Nie wiem jak dlugo polaczenie HTML jest uwazane za otwarte, ani nie wiem jak dlugo MySQL lub inna baza trzyma zadanie otwarcia polaczenia do bazy danych - nie wiem też po co baza ma trzymać jakieś zadanie otwarcia połączenia z bazą

0

BUHEHEHEHEHE
Wolwerine, Kooba - macie u mnie gumisie, zgloscie sie osobiscie :D

Przyszlo wam do glowy, miski, jak jest mozliwe blokowanie/ustalanie jednoczesnej liczby podlaczonych uzytkownikow do bazy MySQL? Skad system wie, kto wlasnie zamknal przegladarke a kto nie?
Wystarczy otworzyc kazdemu jakies polaczenie z MySQL-em typu permanent (a wiec mysql_pconnect a nie mysql_connect ) a nastepnie wyluskac ilosc aktywnych polaczen.

Wiecej podpowiedzi naprawde nie bedzie, chcecie sie narobic dookola i miec wyniki z dokladnoscia do pol godziny - wasza sprawa :D

0
Adamo napisał(a)

Nie wiem jak dlugo polaczenie HTML jest uwazane za otwarte, ani nie wiem jak dlugo MySQL lub inna baza trzyma zadanie otwarcia polaczenia do bazy danych - nie wiem też po co baza ma trzymać jakieś zadanie otwarcia połączenia z bazą

To zajrzyj do manuala do opisu funkcji mysql_connect i mysql_pconnect.
Po co ma trzymac - ano chocby po to by wiedziec, ilu uzytkownikow aktualnie z tej bazy korzysta, ergo - - przy rozsadnej implementacji - ilu jest online.

Do tego caly czas podkreslam, ze ukrycie obslugi licznika gapiow w obsludze sesji jest najbardziej praktyczny - z punktu widzenia programisty. Oczywiscie o ile sie z sesji korzysta do innych celow.

0

nie, proszę, proszę, daj mi jeszcze choć jedną podpowiedź ! Muszę mieć je wszystkie !

ale ciężko facet pracujesz na nominację

0
Shreq napisał(a)

To zajrzyj do manuala do opisu funkcji mysql_connect i mysql_pconnect.
Po co ma trzymac - ano chocby po to by wiedziec, ilu uzytkownikow aktualnie z tej bazy korzysta, ergo - - przy rozsadnej implementacji - ilu jest online.

Do tego caly czas podkreslam, ze ukrycie obslugi licznika gapiow w obsludze sesji jest najbardziej praktyczny - z punktu widzenia programisty. Oczywiscie o ile sie z sesji korzysta do innych celow.

Może on jest jakimś prorokiem, tudzież geniuszem ? [???] nic nie rozumiem - drugie zdanie zaprzecza pierwszemu, ponad to w drugim mówi o trzech zupełnie nie związanych ze sobą rzeczach?

Wiadomo - najtrudniej być prorokiem we własnym kraju..

0

Podoba mi się ten wątek, w większośc postów nic nie wnosi, a tak poza tym autor wątka już napisał:

ZQ napisał(a)

Dzięki, ciekawe rozwiązanie.

;)

Shrek napisał(a)

Wolwerine, Kooba - macie u mnie gumisie, zgloscie sie osobiscie :D

i może lepiej idźcie po te gumisie, a nie bez sensu piszecie

0

mephir nie sap, bo tez 3 razy mu napisaliśmy ze temat jest zakończony ale on prawi swoje teorie spisku mysql'a z html'em.. po prostu ktoś tu chce być nominowanym :P (mam wrażenie ze przez zbyt staranną prace moderatorów w tym roku nie będzie z czego wybierać :( )

0
mephir napisał(a)

i może lepiej idźcie po te gumisie, a nie bez sensu piszecie

No wypraszam sobie, co takiego bez sensu napisalem?

Shreq napisał(a)

To zajrzyj do manuala do opisu funkcji mysql_connect i mysql_pconnect.

No zajrzalem, i co? pconnect tworzy polacznie raz (na watek) i go ne zamyka tylko powiedzmy "cacheuje". Jeden klient sie laczy, sciaga strone (w tym czasie dokonywane sa jakies operacje na bazie) i sie rozlacza, po czym ty sobie ogladasz strone.

php.net napisał(a)

Serwer wieloprocesowy zwykle uruchamia jeden proces (rodzica), który koordynuje inne procesy (potomne) zajmujące się dostarczaniem stron. Kiedy nadchodzi żądanie od klienta, jest ono przekazywane jednemu z procesów potomnych, który w danym momencie nie obsługuje innego klienta. Oznacza to, że gdy ten sam klient wyśle do serwera kolejne żądanie, może zostać obsłużony przez inny proces niż za pierwszym razem. Stałe połączenie w tym przypadku oznacza, że każdy proces potomny ustanawia połączenie z serwerem SQL przy pierwszym wywołaniu strony, która takiego połączenia używa.

Czyli nawet nie musi z tego samego polaczenia korzystac, pamietaj, ze to nie klient (przegladarka) laczy sie z baza tylko serwer http (ew sam php jak dziala jako cgi).

Shreq napisał(a)

Wystarczy otworzyc kazdemu jakies polaczenie z MySQL-em typu permanent (a wiec mysql_pconnect a nie mysql_connect ) a nastepnie wyluskac ilosc aktywnych polaczen.

Bez sensu, skoro to jest polaczenie stale to jest to polaczenie stale, watek raz laczy sie z baza na jakis tam czas (a nie jak przy connect na jedno wywolanie skryptu), co oznacza, ze z jednego polaczenia moze korzystac kilka osob jak i jedna osoba moze korzystac z kilku polaczen (w roznych zadaniach ofkors). Wiec nie wiem co ty chcesz wyluskiwac o_O.

Shreq napisał(a)

Do tego caly czas podkreslam, ze ukrycie obslugi licznika gapiow w obsludze sesji jest najbardziej praktyczny - z punktu widzenia programisty. Oczywiscie o ile sie z sesji korzysta do innych celow.

Tylko, ze sesja defaultowo jest trzymana bodaj pol godziny, to raz a dwa, ze uzywajac session_set_save_handler() musisz pisac wlasne funkcje do jej zapisywania, odczytywania, tworzenia itp (bo do tego ta funkcja sluzy!).

Shreq napisał(a)

Wiecej podpowiedzi naprawde nie bedzie

No nie, i co ja teraz zrobie :/

0
Wolverine napisał(a)

No wypraszam sobie, co takiego bez sensu napisalem?

Przedtem mniej, teraz wiecej :D

No zajrzalem, i co? pconnect tworzy polacznie raz (na watek) i go ne zamyka tylko powiedzmy "cacheuje". Jeden klient sie laczy, sciaga strone (w tym czasie dokonywane sa jakies operacje na bazie) i sie rozlacza, po czym ty sobie ogladasz strone.

pconnect - jak sam raczyles pare linijek nizej zauwazyc - nie jest automatycznie zamykane :D

Bez sensu, skoro to jest polaczenie stale to jest to polaczenie stale, watek raz laczy sie z baza na jakis tam czas (a nie jak przy connect na jedno wywolanie skryptu), co oznacza, ze z jednego polaczenia moze korzystac kilka osob jak i jedna osoba moze korzystac z kilku polaczen (w roznych zadaniach ofkors). Wiec nie wiem co ty chcesz wyluskiwac o_O.

GENIALNE!! Czyli jak mam ograniczenie serwera do 10 jednoczesnych polaczen - to moze mi z niego korzystac 30 osob? Masz podwojne gumisie :D

Tylko, ze sesja defaultowo jest trzymana bodaj pol godziny, to raz a dwa, ze uzywajac session_set_save_handler() musisz pisac wlasne funkcje do jej zapisywania, odczytywania, tworzenia itp (bo do tego ta funkcja sluzy!).

Jest trzymana dokladnie przez 1440 sekund, co mozna zmienic. Czytanie dokumentacji naprawde nie boli. A cala wypowiedz a propos session_set_save_handlers dotyczyla sposobu zakodowania obslugi licznika uzytkownikow - czy do juz uzywanego session_start() dokladac nowe wywolania, czy ukryc to raz na zawsze tamze i miec to z glowy.

No nie, i co ja teraz zrobie :/

Zglosisz sie po gumisie :D

0

Wolwerine, do podwojnych gumisiow dorzuce jeszcze piwo, bo przynajmniej dyskutowales w miare merytorycznie, podpierajac sie maualem - co sie chwali... ale za dwa tygodnie, jak wroce z urlopu. Moze nawet podlacze licznik gosci online dzialajacy w realnym czasie, bo mi sie wlasnie ciekawy pomysl ulagl. Ale sprawdze go jak sie ponownie zobacze z komputerem - czyli jak wyzej :)
Pozdr

0

Moim skromnym zdaniem to stworzenie realnego licznika gości online to ewentualnie uruchamianie jakiegoś apletu na stronie(powiedzmy licznika np.), który będzie cały czas trzymał połączenie z serwerem i wysyłał mu jakiś sygnał np noop. Kwestia tylko zczytania ile kompów "nadaje" te sygnały. Inaczej to wątpie aby było to możliwe.
Innego w miarę sensownego wyjścia nie widze, ponieważ zasady rządzące http są takie a nie inne nie jest to ciągłe połączenie, jakby było ciągłe to po co komu "jakieś" sesje by były?!

0

oczywiscie mozna skorzystac z tego session_set_save_handler, aby np. przy zamknieciu sesji zapisywala sie w bazie wartosc, ze user jest wylogowany, czy cos podobnego ale po co? Amerykanie mogli dostac sie na ksiezyc budujac wieze, ale obliczyli, ze latwiej jest wyslac rakiete ;).

A sposób na dokładny pmiar liczby userów jest prosty - limit zmniejszamy do np 20s i AJAXem pilnujemy, zeby przegladarka sie co 10s laczyla z serwerem, ale tez nie mam pojecia po co komu tak dokladne mierzenie, do tego jeszcze mamy margines bledu na osoby, ktore maja JS wylaczony...

0

O jeeez :/

Shreq napisał(a)

pconnect - jak sam raczyles pare linijek nizej zauwazyc - nie jest automatycznie zamykane :D

Polacznie httpd/PHP<->Baza a nie klient<->httpd!!!

Shreq napisał(a)

GENIALNE!! Czyli jak mam ograniczenie serwera do 10 jednoczesnych polaczen - to moze mi z niego korzystac 30 osob? Masz podwojne gumisie :D

Nie wiem o co ci chodzi ani skad to wywnioskowales :/

Shreq napisał(a)

est trzymana dokladnie przez 1440 sekund, co mozna zmienic. Czytanie dokumentacji naprawde nie boli.

Wiem, ze mozna zmienic, stad uzyte przeze mnie slowo "defaultowo", czytanie moich postow tez nie boli (z tego co wiem). Tak czy siak to sa 24 minuty a wiekszosci wypadkow do php.ini nie ma sie dostepu.

Shreq napisał(a)

Moze nawet podlacze licznik gosci online dzialajacy w realnym czasie, bo mi sie wlasnie ciekawy pomysl ulagl.

Chodzi ci o czas rzeczywisty? :) jesli tak to powodzenia :D

mephir napisał(a)

Moim skromnym zdaniem to stworzenie realnego licznika gości online to ewentualnie uruchamianie jakiegoś apletu na stronie(powiedzmy licznika np.), który będzie cały czas trzymał połączenie z serwerem i wysyłał mu jakiś sygnał np noop. Kwestia tylko zczytania ile kompów "nadaje" te sygnały. Inaczej to wątpie aby było to możliwe.

Dokladnie, i to chce wasnie wytlumaczyc koledze.

BTW, gumisie to serial animowany.

0

Hmm... teraz wpadłem na pomysł, żeby przetestować swój pomysł z apletem javy. Będzie trza sobie odswieżyć obsługę gniazd w javie, jak i ogółem. Serwer ??? hmm... może by wykorzystać jakis gotowy, usługi echo ?? i skryptem pobierać ilość osób podłączonych????
Nie wiem to na razie pomyśł na próbe siły, czaqs realizacji bliżej nie określony.

Tylko jak uwzględnić osoby, które nie chcą używać javy?? :/
Może wymodzić jakiegoś flash'a pod to??
Jakby ktos miał pomysł to z chęcia poczytam.

0

Flasha tez nie kazda przegladarka obsluguje. Js także.

0
mephir napisał(a)

Jakby ktos miał pomysł to z chęcia poczytam.

Jesli nie chodzi o Jave i nie gadamy juz o bzdurach to mozna by uzyc JS-a - onUnload i ajax :)

//ze tak sie przyczepie, co sie stalo z lol.4programmers.net? [diabel]

0

Przyznam się szczerze, że nie wiem co to jest ten ajax, ale wiązać sie to może z tym, że za bardzo ufam swojej obecnej wiedzy a za mało się dokształcam.

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