phpbar.de logo

Mailinglisten-Archive

MySQL + PHP-Speed
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

MySQL + PHP-Speed



Hallo Leute,

ich hoffe mal das hier ist nicht OT :

Ich hab ICRADIUS am laufen, der loggt den ganzen Einwahl-Traffic etc. in eine MySQL-Datenbank.
Im Moment hat diese Tabelle ca.  245877 Eintraege.

Folgenden PHP-Code benutze ich, um die Gesamtonlinezeit aller Kunden auszulesen :

    $mon[1] = '-01-01';
    $mon[2] = '-02-01';
    $mon[3] = '-03-01';
    $mon[4] = '-04-01';
    $mon[5] = '-05-01';
    $mon[6] = '-06-01';
    $mon[7] = '-07-01';
    $mon[8] = '-08-01';
    $mon[9] = '-09-01';
    $mon[10] = '-10-01';
    $mon[11] = '-11-01';
    $mon[12] = '-12-01';

    $mon_e[1] = '-01-31';  # Jeder Monat hat 31 Tage ;)
    $mon_e[2] = '-02-31';
    $mon_e[3] = '-03-31';
    $mon_e[4] = '-04-31';
    $mon_e[5] = '-05-31';
    $mon_e[6] = '-06-31';
    $mon_e[7] = '-07-31';
    $mon_e[8] = '-08-31';
    $mon_e[9] = '-09-31';
    $mon_e[10] = '-10-31';
    $mon_e[11] = '-11-31';
    $mon_e[12] = '-12-31';

    mysql_connect($host,$user,$pass);
    $sql = "select UserName,AcctSessionTime from radacct where (AcctStartTime >= '$jahr$mon[$monat] 00:00:00' AND AcctStopTime <= '$jahr$mon_e[$monat] 23:59:59') order by UserName"; 
    $result = mysql($db,$sql);
    mysql_close();

    $anzahl = mysql_num_rows($result); echo $anzahl." ";
    for ($i = 0; $i < $anzahl; $i++)
    {
      $user = mysql_result($result,$i,'UserName');
      $time = mysql_result($result,$i,'AcctSessionTime');
      $total[$user]=$total[$user]+$time;
    }
    while (list($index,$value) = each($total)) {
      echo "User $index war $value Sekunden online<br>\n";
    }


Sooo, der Query $sql dauert ca. 6 Sekunden zum ausfuehren(ich setze $monat auf 2 = Fabruar" , Gesamt-results :35199).
Der Rest allerdings dauert Ewgigkeiten (also das mysql_result() ). Gibts da vielleicht eine schon von
MySQL her bessere Loesung das alles abzuhandeln ?? Kann mir MySQL das vielleicht schon zusammenrechnen??

Danke,
  Thomas

---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive