Ergebnis 1 bis 4 von 4

Thema: Reload erweiterung der Onlineliste

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Avatar von FLash
    Registriert seit
    10.01.2008
    Beiträge
    122

    Reload erweiterung der Onlineliste

    Habe die onlineliste bishen optimiert.. so das sie erst nach überschreiten der eingestellten reloadzeit aktualisiert wird.... das könnt bei vielen usern viele dbabfragen sparen....


    so sieht meine weristonline.php aus:

    PHP-Code:
    <?
    $zeit = (5 * 60);                                   // Sekunden seit der letzten Aktivität
    $np   = $domain.'/?content=/nickpage&amp;uid=';         // Nickpagelink

    // verhindern, dass die Datei direkt aufgerufen wird
    if (!function_exists ("db_query")) die ("Kein Direktaufruf");

    if (!isset($_SESSION['online']['data'])) {
    $_SESSION['online']['data'] = db_query ('SELECT k.uid, u.nickname FROM '.$db_prefix.'_kontodaten k LEFT JOIN '.$db_prefix.'_userdaten u ON u.uid = k.uid WHERE k.last_active >= '.(time()-$zeit));

    $_SESSION['online']['time'] = time();
    }

    if ($_SESSION['online']['time']+60 <= time() ) {  // hier die reloadzeit einstellen
    $_SESSION['online']['data'] = db_query ('SELECT k.uid, u.nickname FROM '.$db_prefix.'_kontodaten k LEFT JOIN '.$db_prefix.'_userdaten u ON u.uid = k.uid WHERE k.last_active >= '.(time()-$zeit));

    $_SESSION['online']['time'] = time();
    }


    if (mysql_num_rows ($_SESSION['online']['data']) == 0) echo '<span style="font-style: italic;">keiner</span>';
    else {
        $nr = 1;
        while ($user = mysql_fetch_assoc ($_SESSION['online']['data'])){
            if ($user['uid'] == $admin_id) { echo '<a style="font-weight: bold; " href="'.$np.$user['uid'].'"><font color="#0000FF">'.$user['nickname'].'</a>';
            }else{
             if ($user['uid'] == 'xxxxx') { // Admin 2
             echo '<a style="font-weight: bold;" href="'.$np.$user['uid'].'"><font color="#00AA00">'.$user['nickname'].'</a>';
             }else{
              if ($user['uid'] == 'xxxxx') { // Admin 3
              echo '<a style="font-weight: bold;" href="'.$np.$user['uid'].'"><font color="#17CEB5">'.$user['nickname'].'</a>';
              }else{
             echo '<a href="'.$np.$user['uid'].'">'.$user['nickname'].'</a>';
              }
             }
            } 
            if ($nr < mysql_num_rows ($_SESSION['online']['data'])) echo ', ';
                $nr++;
        }
    }
    ?>
    &nbsp;<a href="?content=/intern/userliste">userliste</a>&nbsp;&nbsp;
    hab allerdings hierbei noch 2 weitere user hinzugefügt, deren nick dann auch Fett und dazunoch farblich farblich dargestellt wird...

    wer sich bishen mit php auskennt wird schon wissen welche textstellen zu entfernen bzw zu ändern sind....
    ist zwar nicht die beste lösung für das hinzufügen von admins, aber eine funktionierende .. anstatt die xxxxx kommt natürlich die uid hin

    ich übernehme keine garantie für die funktion dieses scriptes .. bei mir funktioniert es jedenfalls rrr:

  2. #2
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    nur muss man entscheiden, ob es wirklich überall sinnvoll ist, datenbank abfragen einzusparen, da ja die werte in den session variablen platz im arbeitsspeicher bzw. auf der festplatte benötigen, und auch von der zugriffszeit je nach server/konfiguration nicht sehr viel schneller als datenbank abfragen sind, wobei das natürlich auch wieder von der datenabnk software abhängt.

    noch schöner wäre es da vielleicht, mit einer temporären datei zu arbeiten, die dann für alle user gleich ist, und anhand des letzten änderungsdatums alle 60 sec, neu erstellt wird, wobei sich sowas wahrscheinlich erst bei längeren zeiten, so 5 minuten aufwärts, lohnt.
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  3. #3
    Erfahrener Benutzer Avatar von FLash
    Registriert seit
    10.01.2008
    Beiträge
    122
    jap das stimmt..

    das mit einer zeit von 5 minuten ist mir aber auch einfach zu viel..

    man muss halt abwägen was besser ist..

    wobei wenn man dbabfragen verwendet denk ich das es langsamer geht.. bis die anforderung zur db geht und zurück dauert das erstmal auf jedenfall länger als mit einen kleinen cookie (muss aber nicht sein).. der speicherplatzbedarf sollte auch ziemlich gering sein..

    und ich denk mal auf einer klickseite wird die db weitaus mehr belastet als der webserver an sich wenn die ganzen leute anfangen zu klicken.. da gehen wahrscheinlich mehr daten zur db als zum webserver aleine schon wegen den ganzen ralleys.. ( pro ralley 2 abfragen a ca. 0.1kb ( bei kompression) mal 10 ralleys sind 1kb hinzukommt das mehr an rechenleistung was benötigt wird) im gegensatz wird der webserver kaum belastet da das meiste eh schon im cache des browsers ist....

    wie auch immer probieren geht über studieren.. und das kann ich nciht, denn auf meiner seite sind nicht 1000 user angemeldet und so kann ich auch nicht rausfinden was schneller und besser ist..

    der vorteil gegenüber einer festen datei wär, wenn ein user die seite öffnet, das er immer die aktuelle liste sieht und sich selbst auch darauf findet kann anstatt dumm aus der wäsche zu gucken wenn man mal seine eigene nickpage besuchen möchte

    Die feste datei jedenfalls würde auf jeden fall insgesamt weniger abfragen verbrauchen, worunter die aktualität leidet.. und ob der download der einen datei schneller ist als das mit dem cookie ist auch fraglich..

    immerhin haben heutige rechner schon soviel an speicherplatz und rechenleistung das man sowas machen kann..
    oder kannst du dir etwa vorstellen das ich mal mit einen p120mhz mit 16mb ram im web gesurft hab und der seitenaufbau nicht viel langsamer war ?

  4. #4
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    nur das $_SESSION eigentlich aus gründen der sicherheit nicht als cookie abgelegt werden sollte, dafür gibt es $_COOKIE!
    stell dir mal vor, du checkst nur per if($_SESSION['login']==true) ob ein user eingeloggt ist, und dieser wert wird bei ihm auf dem pc abgelegt, dann kann er sich ganz schnell "reinmogeln".
    daher werden eigentlich die werte in den sessions im arbeitspeicher des servers bzw. auf der festplatte abgelegt, und sollten (bei einem sicher konfigurierten server) nicht vom user beeinflussbar sein.

    aber abgesehen davon stimmt es natülrih, dass bei einer klickseite eh schon soviele db abfragen stattfinden, dass man da gut daran tut, an soclhen stellen ein paar einzusparen.
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

Ähnliche Themen

  1. [s] VMS - Nickpage erweiterung
    Von aukweb im Forum [HD] Codeschnippsel
    Antworten: 2
    Letzter Beitrag: 24.02.2011, 16:07
  2. Aktionshaus Erweiterung
    Von creet im Forum Scripte
    Antworten: 2
    Letzter Beitrag: 14.12.2010, 13:14
  3. Signaturen Erweiterung
    Von Xenon im Forum Eierforum
    Antworten: 2
    Letzter Beitrag: 08.06.2008, 16:44
  4. paid4start erweiterung?
    Von jr-coolman im Forum Support zum VMSone
    Antworten: 4
    Letzter Beitrag: 18.07.2007, 05:11
  5. Erweiterung HP-Lose
    Von kleinerengel im Forum [HD] Codeschnippsel
    Antworten: 16
    Letzter Beitrag: 22.01.2007, 01:28

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •