Statistika online uživatelů i hostů

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ZZromanZZ
Člen | 87
+
0
-

Jak řešíte v Nette statistiku online hostů? Jako je to třeba tady na fóru.
Potřeboval bych co nejefektivněji řešit počet hostů online. Pokud si do databáze budu ukládát sessionID a datetime, tak co dělat v případě, že se změní sessionID? Má na to někdo kuchařku?

Jan Endel
Člen | 1016
+
0
-

Stačí si ukládát někde čas posledního kliknutí na nějaký odkaz a po uplynutí nějaké konstantní doby od tohoto času je uživatel offline.

ZZromanZZ
Člen | 87
+
0
-

To souhlasim, ale je treba udelat soucet vsech techto hostu, kteri meli posledni pozadavek nanejvys treba pred 5-ti minutama … a k tomu je potreba udrzovat informaci ke kteremu casu se vztahuje ktera session ID.. a pokud se sessionID meni tak tu informaci ztracim

Jan Endel
Člen | 1016
+
0
-

Ne nutně, vázal bych to na přihlášeného uživatele, ne session id, o session id se stará nette, ale já můžu být přihlášen na více prohlížečích (s různým session id).

ZZromanZZ
Člen | 87
+
0
-

V případě, že bych to chtěl vázat pouze na přihlášené uživatele tak to není problém, ale já potřebuju všechny ne jen ty přihlášené…

nanuqcz
Člen | 822
+
0
-

Nejsem si jistý, ale myslím že nepřihlášeným uživatelům se session id nemění (není k tomu důvod).

Tomáš Votruba
Moderator | 1114
+
0
-
ZZromanZZ
Člen | 87
+
0
-

Schmutzka, to je ale pouze to co řeší přihlášené uživatele. Potřebuju i hosty. Pokud se session ID u nepřihlášených uživatelů nemění mohl by to být součet přihlášených uživatelů, jejichž lastActivity by byla zaznamenaná u uživatelů v databázi a součet všech ostatních sessionID ze specialní tabulky (sessionID, lastActivity). To se mi zdá kompilkované, vznikaly by tam totiž nepřesnosti, protože uživatel už by byl přihlášený ale sessionID z tabulky hostů by se ještě počítalo, takže by to započetlo dvakrát… a myslím, že to nebude všechno.

Ještě mě napadl callback, který by se navěsil na událost, a měl přístup k novému i starému sessionID

<?php
 $session->onSessionIDRegeneration[] = callback($this, 'someFunction');
?>

A koneckonců tady na fóru to je a předpokládám, že fórum je v Nette? Zdrojáky fóra jsem ale nenašel

hAssassin
Člen | 293
+
0
-

nejsem si 100% jisty ale mam pocit, ze kdyz jsem zkousel prihlasovani uzivatelu, tak ze to session ID prave pri prihlaseni menilo, tedy ze jako guest si mel nejaky sessId a po prihlaseni se ti zmenilo, ale to by s pri tomto reseni nebych shopny asi nijak kloudne odchytit a staryho guest se starym sesId smazat, resp. nahradit novym sessId authentizovaneho uzivatele. Zkus to pres firebug testnout, uz si to moc nevybavuju.

Aurielle
Člen | 1281
+
0
-

Ano, při přihlašování se session ID mění jako ochrana před session útoky.

@ZZromanZZ: Fórum je tuším punBB, a David do něj doprogramovával vlastní úpravy.

ZZromanZZ
Člen | 87
+
0
-

dokonce i událost onLoggedIn[] se volá až po přihlášení uživatele tzn, neodchytnu staré sessionID ale už pouze nové.
To mi ale neříkejte, že za celou historii Nette nikdo neřešil takový problém ? A nebo řešil ale pak se přesunul na toplist.cz :-D

Tomáš Votruba
Moderator | 1114
+
0
-

A logovat ip u nepřihlášených by byl problém? Půjde o stejný proces, jen místo id v tabulce users, půjde o ip v tabule hosts.

nanuqcz
Člen | 822
+
0
-

To se radši spokojit s těmi pár duplicitními session id :-) Plno lidí nemá veřejnou IP, a tak sdílí jednu IP adresu svojeho poskytovatele (třeba jako já). Takže by to v některých případech mohlo (podle mě) způsobit daleko větší zkreslení, než ta změna session id.

vvoody
Člen | 910
+
0
-

Keď to musí byť presné meranie tak sa to nemá čo viazať na užívateľa (ide nám predsa len o ich sumu) jednoducho by som ukladal cookie do browsera a databáze vo forme uniq stringu + last action do databáze a nedbal na to či je user ne/prihlásený a kto konkrétne to je. Prípad, že je ten istý account prihlásený z dvoch browserov by som neriešil. Ja by som to rátal ako dvoch návštevníkov. To už sa aj tak zmysluplne nedá zistiť či si niekto spustil dva browsre na jednom pc alebo sa jednoducho dvaja ľudia od seba x km vzdialený prihlásili na ten istý acc.

ZZromanZZ
Člen | 87
+
0
-

Dobry napad myslel jsem na neco podobneho, ale javascriptem, ktery by mi takovy identifikator odesilal periodicky, ale susenka postaci…

vvoody
Člen | 910
+
0
-

Ved aj ajaxom sa prenášajú cookies. To asi aj bude najlepšie to riešiť v signále miesto toho aby to bolo v startupe.

Aurielle
Člen | 1281
+
0
-

Napadlo mě ověřovat kombinaci user agenta a IP, to by mohlo být celkem unikátní.

edit: nebo lépe tohle rozšířit – při první návštěvě to zahashovat a uložit do databáze. A pak aktualizovat při každém kliku, stejně jako by se to dělalo u přihlášeného uživatele. A po přihlášení to s uživatelem spojit (tzn. třeba uložit do identity).

Editoval gmvasek (29. 8. 2012 16:42)

ZZromanZZ
Člen | 87
+
0
-

Napad je to zajimavy, ale myslim si ze kombinace user-agent a IP neni dostatecne unikatni, aby relativne dostatecne spolehilive rozlisila uzivatele.

Nikdo se zatim nevyjadril k memu napadu udelat udalost onSessionIdRegeneration primo v Nette. Protoze v callbacku, do ktereho by se dostalo nove i stare session ID by slo osetrit vsechno. A myslim by se to hodilo nejen pro scitani poctu online surfujicich…