FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Hard- und Softwarefragen

PHP: 400 sind mehr als 1000

PHP: 400 sind mehr als 1000 2003-06-14 18:10
BoTaS
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?

Re: PHP: 400 sind mehr als 1000 2003-06-14 18:33
MoKrates
Sind 80 Anfragen nicht ein wenig viel?

MoKrates

Re: PHP: 400 sind mehr als 1000 2003-06-14 19:10
BoTaS
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

Re: PHP: 400 sind mehr als 1000 2003-06-14 19:56
MoKrates
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

Re: PHP: 400 sind mehr als 1000 2003-06-14 20:05
BoTaS
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?


Re: PHP: 400 sind mehr als 1000 2003-06-14 20:30
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

Re: PHP: 400 sind mehr als 1000 2003-06-14 22:20
BoTaS
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.


Re: PHP: 400 sind mehr als 1000 2003-06-15 02:14
MoKrates
Tja… Viel Info will Weile haben…

MoKrates

Re: PHP: 400 sind mehr als 1000 2003-06-16 04:41
Tzwoenn
// Listingstart und Ende bei... $start = 0; $end = UNIX_TIMESTAMP("2999-12-24"); // in PHP sieht das ein wenig umständlicher aus, aber nur unwesentlich [img]http://www.fb18.de/gfx/22.gif[/img] // Gruppierung in 24 Stundenblöcke $grouping = 60 * 60 * 24; $request = "SELECT FROM_UNIXTIME(FLOOR(timestamp / $grouping) * $grouping), count( * ) FROM table WHERE timestamp >= $start AND timestamp <= $end GROUP BY FLOOR( timestamp / $grouping)";

Re: PHP: 400 sind mehr als 1000 2003-06-16 04:47
Tzwoenn
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.

Re: PHP: 400 sind mehr als 1000 2003-06-20 01:47
BoTaS
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]


Re: PHP: 400 sind mehr als 1000 2003-06-20 13:36
MoKrates
Hm. Moegliche Quellen: Festplattenzugriff (erzeugt keine Prozessorlast), Prozessprioritaet…

MoKrates