Hallo liebe PHP-Resource-Gemeinde,
ich bin gerade dabei für mich und meine Freunde einen Kalender zu programmieren, der auch unsere Verfügbarkeit unter der Woche visualisieren soll (siehe Bild)
Leider sind die Laufzeiten meines Scripts sehr schlecht (im Schnitt 5,5 Sekunden). Nun hoffe ich, daß Ihr mir einen kleinen Anstoß geben könnt, damit die Seiten schneller ausgeliefert werden....
hier mein bisheriger Code (für die Lesbarkeit ein bißchen abgespeckt)
Schon mal vielen Dank für Eure Hilfe!
Schöne Grüße,
Matthias
ich bin gerade dabei für mich und meine Freunde einen Kalender zu programmieren, der auch unsere Verfügbarkeit unter der Woche visualisieren soll (siehe Bild)
Leider sind die Laufzeiten meines Scripts sehr schlecht (im Schnitt 5,5 Sekunden). Nun hoffe ich, daß Ihr mir einen kleinen Anstoß geben könnt, damit die Seiten schneller ausgeliefert werden....
hier mein bisheriger Code (für die Lesbarkeit ein bißchen abgespeckt)
PHP-Code:
// array $user wurde bereits erzeugt in der Form:
// $user[X]['id'] = userID
// $user[X]['color'] = Farbe des Users
// Start aktuelle Wochenansicht:
// gehe alle Tage durch
for ($d = 1; $d < 8; $d++) {
echo '<table>';
// gehe einzelne Stunden durch (7 bis 24 Uhr)
for ($h = 7; $h < 24; $h++) {
//gehe alles im viertel Stundentakt durch
for ($m = 0; $m < 4; $m++) {
echo '<tr>';
$fromtimestamp = get_fromtimestamp(time(), $d, $h, $m);
$untilltimestamp = $fromtimestamp + (15*60);
// gehe jeden einzelnen User durch der ne Farbe hat ...
for ($u=0; $u < count($users); $u++) {
// schaut in DB nach, ob es zum aktuellen Zeitpunkt für den aktuellen User ein Eintrag hat:
$mysql = "select * from `kom_calendar` WHERE .... (etwas länger, aber funktioniert)"
$result = mysql_db_query($db_name, $mysql);
if (mysql_num_rows($result)> 0)
echo '<td bgcolor="'.$users[$u]['color'].'"> </td>';
else
echo '<td> </td>';
}
echo '</tr>';
}
}
echo '</table>';
}
PHP-Code:
// mysql Anfragestring:
$mysql = "select * from `enbit_kom_calendar` WHERE
(`fromtime` > '".($fromtimestamp-1)."' AND `fromtime` < '".($untilltimestamp+1)."') OR
(`untilltime` > '".($fromtimestamp-1)."' AND `untilltime` < '".($untilltimestamp+1)."') OR
(`fromtime` < '".($fromtimestamp+1)."' AND `untilltime` > '".($untilltimestamp-1)."') AND
`participants` LIKE '%".$users[$u]['user']."%'";
Schon mal vielen Dank für Eure Hilfe!
Schöne Grüße,
Matthias
Kommentar