Denkanstoß für Programmierung eines Boards
Hopsel
- programmiertechnik
Hi alle!
Ich möchte ein kleines Board programmieren.
Jedem Beitrag in einem Thread sollen verschiedene Daten des Autors (sofern er registriert ist) beigestellt werden.
Wenn ich nun aber für jeden Beitrag einen Datenbankzugriff brauche, um an die jeweiligen Daten zu kommen, bin ich damit ehrlich gesagt nicht zufrieden.
Wie kann ich die Anzahl der Abfragen minimieren?
MfG H☼psel
Hi,
Wenn ich nun aber für jeden Beitrag einen Datenbankzugriff brauche, um an die jeweiligen Daten zu kommen, bin ich damit ehrlich gesagt nicht zufrieden.
wenn nur der eine Beitrag geholt wird, ist das doch in Ordnung. Wenn nicht:
Wie kann ich die Anzahl der Abfragen minimieren?
Indem Du die Tabellen JOINst.
Cheatah
Hi Cheatah!
Wie kann ich die Anzahl der Abfragen minimieren?
Indem Du die Tabellen JOINst.
Danke. Danach habe ich gesucht. =)
MfG H☼psel
echo $begrüßung;
Wenn ich nun aber für jeden Beitrag einen Datenbankzugriff brauche, um an die jeweiligen Daten zu kommen, bin ich damit ehrlich gesagt nicht zufrieden.
Wie kann ich die Anzahl der Abfragen minimieren?
Verwende eine Cache. Der kann auch ein simples Array sein.
Beispiel in PHP:
function getAuthorData($id) {
static $cache = array();
if (!isset($cache[$id])) {
$cache[$id] = ... // Datenbankabfrage
}
return $cache[$id];
}
So findet bei jedem Seitenabruf nur ein Datenbankzugriff pro Autor statt.
Weitere Möglichkeiten:
echo "$verabschiedung $name";
Hi,
Verwende eine Cache. Der kann auch ein simples Array sein.
er muss lediglich persistent gespeichert werden, weil er ansonsten keinen Sinn hat.
function getAuthorData($id) {
static $cache = array();
[...]
}
Und ich sehe nicht, dass etwas derartiges hier passieren würde.
Cheatah
--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes
echo $begrüßung;
Verwende eine Cache. Der kann auch ein simples Array sein.
er muss lediglich persistent gespeichert werden, weil er ansonsten keinen Sinn hat.
Aus diesem Grunde habe ich $cache mit dem Schlüsselwörtchen static versehen.
function getAuthorData($id) {
static $cache = array();
> Und ich sehe nicht, dass etwas derartiges hier passieren würde.
[Using static variables](http://de.php.net/manual/en/language.variables.scope.php#language.variables.scope.static)
echo "$verabschiedung $name";
Hi,
Verwende eine Cache. Der kann auch ein simples Array sein.
er muss lediglich persistent gespeichert werden, weil er ansonsten keinen Sinn hat.
Aus diesem Grunde habe ich $cache mit dem Schlüsselwörtchen static versehen.
und hast die Variable damit im Scope der Funktion über dessen Lebenszeit hinaus verfügbar gemacht. Nach Scriptende stirbt sie trotzdem. So funktioniert static - und zwar in allen Sprachen, die ich kenne. Persistenz ist da nicht in Sicht.
Ja, das solltest Du lesen. Erlaube mir eine kurze Zwischenfrage: Was ist Deine Vermutung, warum ich genau bis zur Variablendeklaration zitiert habe?
Cheatah
echo $begrüßung;
Verwende eine Cache. Der kann auch ein simples Array sein.
er muss lediglich persistent gespeichert werden, weil er ansonsten keinen Sinn hat.
Aus diesem Grunde habe ich $cache mit dem Schlüsselwörtchen static versehen.und hast die Variable damit im Scope der Funktion über dessen Lebenszeit hinaus verfügbar gemacht. Nach Scriptende stirbt sie trotzdem. So funktioniert static - und zwar in allen Sprachen, die ich kenne. Persistenz ist da nicht in Sicht.
Genau das war meine Absicht:
So findet bei jedem Seitenabruf nur ein Datenbankzugriff pro Autor statt.
Ob es sinnvoll ist, die aus der DB abgefragten Daten länger als eine Scriptlaufzeit vorzuhalten, steht auf einem anderen Blatt. Die Komplexität eines solchen Cache-Mechanismus artet dann sicherlich schnell aus, will man aktuelle Daten haben oder behalten. Angaben wie "Anzahl der Postings", "zuletzt online gesehen" usw. veralten möglicherweise recht schnell. Man kann auch mit zwar gecachten Daten leben, die dann aber vielleicht ab einem bestimmten Zeitpunkt bis zu Ablauf der gewünschten Verweildauer im Cache nicht mehr stimmen.
Hinzu kommt noch, dass dieser Cache sicher benutzerübergreifend gestaltet werden soll, was die Komplexität noch durch Zugriffskonfliktreglungen erhöht.
Ich nahm stillschweigend an, dass die Lösung nicht so kompliziert/komplex ausfallen sollte.
echo "$verabschiedung $name";
echo $begrüßung;
Nachtrag:
Verwende eine Cache. Der kann auch ein simples Array sein.
er muss lediglich persistent gespeichert werden, weil er ansonsten keinen Sinn hat.
Ich kann einen Sinn darin erkennen.
Meine Glaskugel sagte mir, dass ein Autor mehrfach im Thread auftreten kann und dass bisher dafür pro Seitenabruf (= pro Thread) mehrfach seine Daten aus der Datenbank abgefragt hat. Insofern bringt ein Zwischenspeichern wie ich es vorschlug schon einen Gewinn.
echo "$verabschiedung $name";
Hi dedlfix!
er muss lediglich persistent gespeichert werden, weil er ansonsten keinen Sinn hat.
Ich kann einen Sinn darin erkennen.
Ich habe es auch so verstanden, wie du es gemeint hast. :-) Auch war mir dieses Möglichkeit natürlich bekannt, allerdings viel zu umständlich.
Danke für deine Hilfe.
MfG H☼psel
Hi,
Verwende eine Cache. Der kann auch ein simples Array sein.
er muss lediglich persistent gespeichert werden, weil er ansonsten keinen Sinn hat.
Ich kann einen Sinn darin erkennen.
Meine Glaskugel sagte mir, dass ein Autor mehrfach im Thread auftreten kann und dass bisher dafür pro Seitenabruf (= pro Thread) mehrfach seine Daten aus der Datenbank abgefragt hat. Insofern bringt ein Zwischenspeichern wie ich es vorschlug schon einen Gewinn.
nein, keinesfalls. Erstens wirst Du fast ausschließlich Cache-Misses haben, schätzungsweise im Bereich um 75% +/-20 Prozentpunkte. Zweitens erfordert dieses Vorgehen, dass die Datenobjekte einzeln oder zumindest in kleineren Gruppen abgeholt werden, was _gerade_ beim aktuellen Anwendungsfall tödlich ist. Ohne eine Speicherung über einen längeren Zeitraum kann IMHO nicht mal der Begriff "Cache" zutreffen - und wenn ein einzelner Request einen längeren Zeitraum darstellt, dann läuft da etwas Grundsätzliches schief ;-)
Cheatah
Hi,
Wenn ich nun aber für jeden Beitrag einen Datenbankzugriff brauche, um an die jeweiligen Daten zu kommen, bin ich damit ehrlich gesagt nicht zufrieden.
Wie kann ich die Anzahl der Abfragen minimieren?
???
pack das doch alles zusammen in die query..!
und wech