[ CiM0beTa @ 31.03.2013. 14:28 ] @
Uspero sam da prebrojim ukupno registrovane korisnike citajuci ih iz baze. Ali kako da izbrojim trenutno prijavljene? neki predlog ili link?
[ plus_minus @ 31.03.2013. 14:54 ] @
Mislim da bi ovo dole bilo sasvim dovoljno da ti olakša za početak... a ti nastavi po svom..
inače, nije najnajidealnije niti najpreciznije, ali možeš imati neki uvid i na ovaj način..
Pišem u letu iz glave..

Code (php):


 $mdTimeStamp=md5('uniqueStamp');
 if(!isset($_SESSION[$mdTimeStamp]))
  $_SESSION[$mdTimeStamp]=base64_encode(microtime());
 $uniqueStamp=$_SESSION[$mdTimeStamp];

 


Kako dođe bilo koji posetioc, istog momenta mu se dodeljuje md5('uniqueStamp') i dokle god traje njegovo obitavanje na tvom sajtu imaće tu jednu sesiju 'zalepljenu' samo za njega.
Ti nakon toga možeš da ispišeš da php jednostavno kreira novi fajl i da ga ugura u neki folder koji se zove "tempVisits" (bla, bla, etc.) a kreirani fajl da se zove $uniqueStamp i da prostim prebrojavanjem kreiranih fajlova dobiješ broj korisnika, to jest, broj sesija koje je server kreirao.

Nije najpreciznije, jer, kada neko ode na tvoj sajt pa malo pročavrlja, pa onda ugasi tab ili prozor gde je tvoj sajt, al' ne ugasi browser, sesija koja je kreirana, po defaultu, ako se ne varam, živi nekih 15 minuta.
Dakle, korisnik je bio na tvom sajtu 5 minuta i otišao na drugu lokaciju, nastavio da surfuje.. ti ćeš nakon tih 5 minuta, narednih 10 minuta imati i tog korisnika zabeleženog.

Podrazumeva se da ispišeš i komandu unlink() za svaki fajl onda kada sesija istekne, jer u protivnom, pogađaš... pravi se đubre na serveru i ništa se pod milim bogom ne postiže onda.
Dakle, tu gde je ovo if(!isset($_SESSION[$mdTimeStamp]) nastaviš sa ... dodaš nešto tipa && filemtime() ...

Još bolje je možda da sve te sesije, nazive sesija ispisuješ u samo jednom fajlu...

Code (php):


file_put_contents($userCountFilePathName, "$uniqueTimeStamp \n", FILE_APPEND, LOCK_EX);

 


I posle samo prebrojiš koliko linija ima u tom fajlu i broj linija je ustvari broj korisnika..
Al' isto tako ćeš morati da ispišeš i kod koji će da uklanja liniju koja ne postoji, to jest, ime sesije koja ne postoji u samom fajlu, tako da je možda ipak bolje da rečeš php-u da džidža/briše fajlove.. pre nego da sve trpa u jedan fajl..

You got the point, right? :)

edit: umesto ovoga ..

Code (php):


$_SESSION[$mdTimeStamp]=base64_encode(microtime());

 


možda je bolje ovo?

Code (php):


$_SESSION[$mdTimeStamp]=base64_encode($_SERVER['REQUEST_TIME_FLOAT']);

 


Btw, ne znam ni koliko je ovo dobro ukoliko imaš poprilično mnogo korisnika.. koliko će prebrojavanje onda otežavati rad... i sve propratno što ide uz to..
Ako nećeš da praviš lični "googleAnalyticsREalTime - active user counter" pa da nadgledaš poprilično često ... onda je ok.