2010-11-18 16 views
0

Ich arbeite auf einer Website für meine Uni-Arbeit, und es muss Login-Zugriff für verschiedene Benutzer zulassen. Mein Tutor hat mir gesagt, dass ich eine Sitzungsvariable/ein Array verwenden sollte, um alle Benutzerdaten wie Vorname, Adresse usw. zu speichern.Sitzungsvariablen vs Datenbank

In meinem Entwurf habe ich nur die Benutzer-ID und E-Mail-Adresse und dann Funktionen, um die Daten aus der Datenbank nach Bedarf zu erhalten. Er sagt, dies würde die Seite verlangsamen, da es viele Verbindungen zur Datenbank gibt.

Soll ich alle Daten in Sitzungsvariablen speichern oder eine Verbindung zur Datenbank herstellen, um auf diese Daten zuzugreifen?

Danke für jeden Rat :).

Antwort

3

Sie können die Informationen aus der Datenbank abrufen, wenn sie sich zum ersten Mal anmelden, und sie dann in Sitzungsvariablen aufbewahren, bis sie sich abmelden oder die Sitzung abläuft. Wenn viele Benutzerdaten in Sitzungsvariablen gespeichert werden, kann dies zu einem Mehraufwand führen, wenn viele Benutzer gleichzeitig angemeldet sind. Dies unterscheidet sich jedoch von konstanten Abfragen.

Der beste Weg zu beantworten könnte sein, zu fragen, wie viele andere Daten für Benutzer existieren und wie viel davon wahrscheinlich in einer "typischen" Sitzung benötigt wird. Die Daten, die die meisten Benutzer während einer Sitzung laden müssen, könnten bei der Anmeldung geladen werden. Daten, die die meisten Benutzer während einer typischen Sitzung nicht benötigen, können bei Bedarf geladen werden.

+0

Der Overhead ist nicht so groß, da es nur eine Abfrage ist, um das gesamte Benutzerprofil zu erhalten und man kann erwarten, dass Sie die Verbindung später bei der Anfrage trotzdem brauchen. Ich denke nicht, es macht so einen großen Unterschied. – KingCrunch

+0

Danke, ich würde keine konstanten Anfragen an die Datenbank stellen, nur auf bestimmten Seiten. Zum Beispiel, wenn sie die Informationen sehen möchten, die über sie gespeichert sind. Nicht jede Seite benötigt Zugriff auf die Datenbank, aber jedes Mal, wenn ich den Benutzer anmelde, überprüfe ich dies über Sitzungen und Datenbank, ist das korrekt? – Elliott

+0

+1 für persistente Informationen in der Datenbank, aber lokale Werte für die Leistung verwenden. – Randy

0

Die Antwort hängt davon ab, wie "echte Welt" Sie mit Ihrer Lösung erhalten möchten. In einer realen Website mit hohem Datenaufkommen, die über mehrere Server verteilt wird, werden die Daten in einer Datenbank gespeichert und dann für einen bestimmten Zeitraum zwischengespeichert, indem z. B. Memcache beim Abruf aus der Datenbank verwendet wird. Wenn Sie das nicht wegtragen müssen, ist das Zwischenspeichern in der Sitzung vollkommen akzeptabel.