Codeoptimierung PHP/SQL

dobermant

Erfahrenes Mitglied
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:
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";
	}
}
 
Hm.... ich würde es so machen:
Tu tust bei der DB en Feld hinzufügen "lastvisit" und immer wenn die page aufgerufen wird kommt der aktuelle timestamp rein! Dann kannst du das bei der Abfrage beliebig ordnen, gelb, rot, grün, blau oder sonstwie färben usw!
 
Zurück