Tja für eine "Klicks-Statistik" brauchte ich so rund 80 SQL Anfragen + ein paar drumrum…
Auf dem XP mit 1.133GHz brauch er so 18 Sekunden um die Seite zu machen…
Auf dem RedHat 9 mit 433MHz ist kein Unterschied zu anderen Seiten ohne so vielen Anfragen zu merken…
Die PHP-Version auf XP ist von 2001. RedHat9 wohl aktuell.
Nun die Frage: Ist Windoof doof, PHP so schlecht gewesen vor 2 Jahren oder kann das eine falsche Konfiguration sein?
Sind 80 Anfragen nicht ein wenig viel?
MoKrates
Sind 80 Anfragen nicht ein wenig viel?
MoKrates
weiß nicht… mir ist nicht eingefallen wie es mit weniger geht. Es sind ja 80 Spalten in der Tabelle. Group by 123<x<234 and 234<x<345 and… oder ähnlich kann SQL doch nicht, oder?
ok, Du weißt nicht worüber ich rede… kannst es dir ja mal angucken:
http://botas.homedns.org/statistik2.php
Hm. Ich weiss ja nicht, wie die Daten gehalten werden. Aber waere es nicht vielleicht sinnvoll, erstmal alle Daten zu holen, und die nachtraeglich sortieren zu lassen? Schaetze, das wuerde schneller gehen. Und es waere nur ein einziger Zugriff.
Oder die Statistik nicht on-demand-onthefly generieren, sondern per cronjob jeden tag einmal, oder so.
MoKrates
hmm.. dann müße sie ja minestens alle Minute gemacht werden…
Die Daten liegen im Prinziep in einer Tabelle mit:
Wer Wann wo
Wobei das "wann" ein Timestamp ist und die einzelenen SQLAnfragen dann halt für jede Spalte abfragt wie viele klicks zwischen wann > startzit+spalte*spaltenbreite AND wann < startzeit + (spalte+1)* spaltenbreite sind.
Hast Du ne bessere Idee?
Jap. Redundante Daten speichern, um den Zugriff zu beschleunigen. Nach Deiner Implementation muss die DB ja die ganzen Zeilen zaehlen. Es waere wesentlich einfacher, irgendwo einen Counter zu speichern, der bei jedem Klick hochgezaehlt wird. Deine Klickdatenbank steht dem aber nicht im Wege.
MoKrates
Jap. Redundante Daten speichern, um den Zugriff zu beschleunigen. Nach Deiner Implementation muss die DB ja die ganzen Zeilen zaehlen. Es waere wesentlich einfacher, irgendwo einen Counter zu speichern, der bei jedem Klick hochgezaehlt wird. Deine Klickdatenbank steht dem aber nicht im Wege.
MoKrates
Entschuldiege, wenn ich mich doof stell, aber wie soll das den funktionieren? Die Start- und Endzeit soll doch variabel sein… und selbst wenn man die fest hätte bräuchte man ja 80 Zähler, für jede Spalte einen. Ok, die könnte man dann mit einer Anfrage holen, aber das wäre zu viel Einschränkung.
Tja… Viel Info will Weile haben…
MoKrates
Zeige Datensätze 0 - 29 (287 insgesamt, die Abfrage dauerte 0.1722 sek)
SQL-Befehl : [Bearbeiten] [SQL erklären] [PHP-Code erzeugen]
SELECT FROM_UNIXTIME( FLOOR( UNIX_TIMESTAMP( datum ) / 3600 / 24 ) * 3600 * 24 ) , count( * )
FROM traffic
GROUP BY FLOOR( UNIX_TIMESTAMP( datum ) / 3600 / 24 )
bei nem datenbestand von 6849 insgesamt.
Hi,
die SQL-Anfrage hab ich dann doch nicht mehr ausprobiert, weil ich leider gestehen muss, dass ich sie nicht so ganz verstehe.
Mal sehen wie das auf dem endgültigen Server aussieht.
Ich hoffe noch, das die lange Warte zeit nur ein Windooffehler ist, da wärend der ganzen Wartezeit die CPU-Last nur auf wahnsinnige 2-3% steigt. Sonst werd ich mir das Ding nochmal angucken. Unter Linux geht es ja sofort.
[img]
http://botas.homedns.org/www.moonwomanonline.net/tab/stat.gif[/img]
Hm. Moegliche Quellen: Festplattenzugriff (erzeugt keine Prozessorlast), Prozessprioritaet…
MoKrates