Mailinglisten-Archive |
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
php::bar PHP Wiki - Listenarchive