php timeout
peter 443
- php
Ich habe eine Datenbank, die die Spalten date (YY-MM-DD HH:MM:SS) und value (also Zahlenwerte) enthält.
Ich möchte jetzt mit php die Werte jedes einzelnen Monats zusammenrechnen, zunächst einmal fürs erste Jahr.
Leider bekomme ich bei dem geschriebenen Code immer eine "timeout-Fehlermeldung" in verschiedenen Zeilen der Schleife.
Woran liegt das denn?
$mindatearray[1] = das niedrigste Monat der Datensätze.
$mindatearray[0] = das niedrigste Jahr der Datensätze.
for ($x = 0; $x < 12 ; $x++) { //läuft für jedes Monat ab dem 1. Datensatz
$x = $mindatearray[1];
$betweenquery = "SELECT
SUM(value) as valuemonth
FROM
financials
WHERE
date
BETWEEN
'".$mindatearray[0]."-".$x."-1 00:00:00' and '".$mindatearray[0]."-".$x."-30 23:59:59'"; //
$betweentable = $db->query($betweenquery);
if (!$betweentable) {
die ('Fehlermeldung!');
}
$betweenresult = $betweentable->fetch_assoc();
$between = array();
$between[$mindatearray[0].'-'.$x] = $betweenresult['valuemonth'];
}
Ich habe ähnliche Schleifen noch für die vollen Jahre und für das letzte Jahr geschrieben. Die berechneten Werte werden dann in Prozent umgerechnet und als Höhe von Balken in einer Grafik ausgegeben.
Aber es geht nicht, da ich immer Timeout habe. Was ist falsch daran?
Hallo,
Leider bekomme ich bei dem geschriebenen Code immer eine "timeout-Fehlermeldung" in verschiedenen Zeilen der Schleife.
Woran liegt das denn?
$mindatearray[1] = das niedrigste Monat der Datensätze.
$mindatearray[0] = das niedrigste Jahr der Datensätze.
for ($x = 0; $x < 12 ; $x++) { //läuft für jedes Monat ab dem 1. Datensatz
$x = $mindatearray[1];
# Sonstiger Code, der $x nicht ändert
}
Deine Monate laufen von 0 bis 11, in der ersten Zeile Deines Schleifenrumpfes setzt Du Deine Zählvariable fest auf einen Wert, der sicher zwischen 0 und 11 liegt. Wie kann da die Abbruchbedingung jemals erreicht werden?
> Ich habe ähnliche Schleifen noch für die vollen Jahre und für das letzte Jahr geschrieben.
Mit GROUP BY und DAY() wird es vermutlich überhaupt nicht erforderlich sein, SQL-Statements in Schleifen abzusetzen. Sowas ist fast immer keine gute Idee.
Freundliche Grüße
Vinzenz