moin...
folgende Sache.
Ich habe eine SQL-Table mit den Web-Zugriffen der letzten 5 Tage.
ungefaehr so: id, pageid, ip, timestamp
so jeztzt moechte der kunde in seinem statistiksystem
ein kleines warnsystem haben, dass ihm auskunft darüber gibt,
ob eine seite längere zeit nicht aufgerufen wurde...
es gibt 3 zustaende
1. seite wurde innerhalb der letzten 2 tage aufgerufen = gruen.gif
2. seite wurde schon länger wie 2 tage nicht aufgerufen = gelb.gif
3. seite wurde innerhalb der letzten 5 tage nicht aufgerufen = rot.gif
sicherlich habe ich eine lösung gefunden, diese erscheint mir aber nicht
optimal. erstens wird innerhalb der hauptschleife (die alle pages auflistet) nochmal eine sqlabfrage gestartet, zweitens benötige ich ja noch eine if-abfrage auch innerhalb der schleife, dadurch könnte es ja zu argen geschwindigkeitseinbussen kommen.
koennte man die abfrage noch optimieren? kann man die sqlabfragen zu einer zusammenfassen? gibs sonst noch alternativen?
besten dank im vorraus.
code:
folgende Sache.
Ich habe eine SQL-Table mit den Web-Zugriffen der letzten 5 Tage.
ungefaehr so: id, pageid, ip, timestamp
so jeztzt moechte der kunde in seinem statistiksystem
ein kleines warnsystem haben, dass ihm auskunft darüber gibt,
ob eine seite längere zeit nicht aufgerufen wurde...
es gibt 3 zustaende
1. seite wurde innerhalb der letzten 2 tage aufgerufen = gruen.gif
2. seite wurde schon länger wie 2 tage nicht aufgerufen = gelb.gif
3. seite wurde innerhalb der letzten 5 tage nicht aufgerufen = rot.gif
sicherlich habe ich eine lösung gefunden, diese erscheint mir aber nicht
optimal. erstens wird innerhalb der hauptschleife (die alle pages auflistet) nochmal eine sqlabfrage gestartet, zweitens benötige ich ja noch eine if-abfrage auch innerhalb der schleife, dadurch könnte es ja zu argen geschwindigkeitseinbussen kommen.
koennte man die abfrage noch optimieren? kann man die sqlabfragen zu einer zusammenfassen? gibs sonst noch alternativen?
besten dank im vorraus.
code:
PHP:
$zeit= time()-3600*96; //4 tage
$query = "SELECT `id`, `name`, `erstdatum`, `visits` AS counter1, `uniques` AS counter2 FROM `counter_kat` LIMIT ".$offset.", ".$rowcount." ";
while( $kategorie = mysql_fetch_array($result, MYSQL_ASSOC) ) { //hauptschleife
$sql = "SELECT id,time FROM counter_stats_last5day WHERE kat_id = '$kategorie[id]' order by time";//
$result = mysql_query($sql, $conn);
$arr = mysql_fetch_array($result);
if (mysql_num_rows($result) == 0) {//kein zugriff gefunden
$lampengif="rot.gif";
} elseif($arr['time'] < $zeit) {//zugriff innerhalb der letzten 5 tage
$lampengif="gelb.gif";
} else {
$lampengif="gruen.gif";
}
}