Avatar billede trophymanager Nybegynder
08. juli 2005 - 20:13 Der er 16 kommentarer og
1 løsning

Tæl sessions og caching.

Hej Alle.

Jeg har en side jeg gerne vil skrive hvor mange der er online på, oppe i højre hjørne. Jeg har dog bange anelser om at dette vil kunne nedsætte performance og vil i denne sammenhæng høre hvordan jeg kan indkorporere noget caching i dette - jeg bruger ikke frames skal det lige nævnes.

Altså: Hvordan tæller jeg online sessions, og hvordan præsenterer jeg dette, uden at den tæller hver eneste gang en bruger loader siden - resten af side skal IKKE være cached.

På forhånd tak.
Avatar billede jakobdo Ekspert
08. juli 2005 - 20:42 #1
Jeg tror ikke du får lov at tælle sessions.
Men kig evt på denne counter:
http://www.phpfreaks.com/tutorials/62/0.php
Avatar billede jaw Nybegynder
08. juli 2005 - 21:05 #2
Enig med jakobdo, den mest hensigtsmæssige måde vil jeg påstå er at proppe det i en mysql-database og så foretage beregningerne udfra denne - og så slette dem efter f.eks. 5 eller 10 mins. inaktivitet.
Avatar billede trophymanager Nybegynder
08. juli 2005 - 21:58 #3
Jeg regner med at der på et tidspunkt kan komme op til 30.000 online ad gangen. Lad os ihvertfald forestille os der gør - er det script så ikke en uholdbar løsning, da der skal læses og skrives så meget til databasen?
Avatar billede jakobdo Ekspert
08. juli 2005 - 22:01 #4
Der bliver ihf en masse I/O, så jo.
Men hvis du har 100% styr over serveren, så kan du jo godt læse hvor mange sessions der ligger i php-sessions dir.
Avatar billede trophymanager Nybegynder
09. juli 2005 - 09:08 #5
det har jeg
Avatar billede jakobdo Ekspert
09. juli 2005 - 09:31 #6
Du kan vel så lave noget i stil med:

function countSessions($path)
{
$dir = opendir($path);
while ($file = readdir($dir))
{
if(is_file($dir.file))
{
$i++;
}
}//end while
closedir($dir);
return $i;
}
Avatar billede trophymanager Nybegynder
09. juli 2005 - 10:55 #7
$path er mappen med sessions?
Avatar billede jakobdo Ekspert
09. juli 2005 - 11:22 #8
Jep!

Men det vil jo stadig være meget I/O!
Den skal jo tælle alle 30.000 filer hver gang en bruger viser siden!

Og DB er jo lavet til at lagre store data-mængder!
Avatar billede trophymanager Nybegynder
09. juli 2005 - 13:26 #9
hrm ja.. det kunne også være mand bare skulle lave det til sig selv :) på en intern side.
Avatar billede jakobdo Ekspert
09. juli 2005 - 13:30 #10
Det kommer jo også lidt an på hvad du skal bruge det hele til!
Avatar billede trophymanager Nybegynder
09. juli 2005 - 13:32 #11
kan du ikke give mig et eksempel med path? jeg er noob og ikke helt hjemme med syntaks
Avatar billede trophymanager Nybegynder
09. juli 2005 - 13:46 #12
det ser sådan her ud nu.. men jeg får ikke noget tal ud:

<?

function countSessions($path)
{
$dir = opendir($path);
while ($file = readdir($dir))
{
if(is_file($dir.file))
{
$i++;
}
}//end while
closedir($dir);
return $i;
}

countSessions('c:/apachefriends/xampp/tmp');
?>
Avatar billede trophymanager Nybegynder
09. juli 2005 - 13:49 #13
har prøvet med echo $i men der er no go
Avatar billede jakobdo Ekspert
31. juli 2005 - 19:12 #14
Jeg tror måske dette ville være korrekt:

<?

function countSessions($path)
{
$dir = opendir($path);
while (false !== ($file = readdir($dir)))
{
    if(is_file($path.$file))
    {
        $i++;
    }
}//end while
closedir($dir);
return $i;
}

countSessions('c:/apachefriends/xampp/tmp');
?>
Avatar billede trophymanager Nybegynder
05. august 2005 - 14:19 #15
Tak for hjælpen. Kan stadig ikke få det til at virke :( Men smid et svar for din hjælp. SÅ vil jeg kigge på det ved en anden lejlighed :)
Avatar billede jakobdo Ekspert
05. august 2005 - 14:22 #16
Svar
Avatar billede jakobdo Ekspert
08. august 2005 - 08:34 #17
Takker for point
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester