2016-03-18 11 views
0

Ich habe vor kurzem ein Sicherheitssystem erstellt, das steuert, welche Seiten ein Benutzer sehen und zugreifen kann. Ich habe es so aufgebaut, dass alle Werte für jede Seite im System bei der Anmeldung in einer Sitzungsvariablen gespeichert wurden, um nicht auf die Datenbank zugreifen zu müssen die gleiche Information.Wann sollten Sie eine Session-Variable in PHP verwenden?

In einem Fall wie diesem halte ich es für richtig, eine Sitzungsvariable zu verwenden. Aber wenn Werte nur auf einer einzelnen Seite verwendet würden, würde ich stattdessen von der Datenbank aus zugreifen.

An welchem ​​Punkt, zwischen diesen beiden Extremen, wird ein Wert in einer Session-Variablen richtig gesetzt? Oder basieren diese mehr auf dem, was Sie speichern, wie ein Benutzername, anstatt wie viel Sie verwenden?

+0

Klingt, als würden Sie mehr von einer Cache-Schicht profitieren. Das Vorladen der Daten aller Seiten, wenn der Benutzer nicht auf diese Seiten zugreifen kann, ist eine Verschwendung von Ressourcen. – ceejayoz

+0

@ceejayoz Ich speichere nur ein Array von Bitflags, um zu wissen, welche Links und Menüelemente in der Kopfzeile und den Seiten angezeigt werden. Nichts über den Inhalt der Seite selbst, Sorry, wenn ich unklar war. – user3700940

Antwort

0

Sitzungsvariablen werden auf Ihrem Server gespeichert, genau wie Datenbankwerte auf Ihrem Server gespeichert sind.

Der Unterschied ist, anstatt für einzelne Informationen wie Sie mit einer Datenbank abzufragen, Sie laden die gesamte "Zeile" (d. H. Sitzung) zu einem Zeitpunkt.

Es gibt keinen Grund, warum Sie nicht die gleichen Leistungsergebnisse erzielen könnten, indem Sie einfach alle Ihre Werte in einer einzigen Zeile in Ihrer Datenbank speichern und danach fragen. (Hinweis: Dies ist entweder mit Sitzungsvariablen oder mit Datenbankfeldern möglich.) Letztendlich stammen beide Datenquellen aus dem Speicher des Servers.

Das ... traditionell

Session

gesagt Variablen auf den Zustand des Clients verbundene temporäre Werte speichern, zum Beispiel, ob der Client in haupt protokolliert wird, wenn die letzte Login-Zeit war, etc .

Datenbankvariablen sollten Dinge speichern, die Sie über diese bestimmte Clientsitzung hinaus beibehalten möchten.

+0

Wäre es nicht länger nötig, eine Datenbank nach Informationen abzufragen, wenn jede Seite geladen wird und sie dann analysiert werden muss? Dann kann ich einfach eine Sitzungsvariable abfragen, um benötigte Informationen zu erhalten, wie in meinem Beispiel? – user3700940

+0

Die beiden sind äquivalent für äquivalente Datenmengen. Was lässt Sie denken, dass das Abrufen einer Sitzungsvariablen schneller ist? Es muss immer noch irgendwo vom Serverspeicher gelesen und dann vollständig an den Client gesendet werden, um analysiert zu werden. – hofan41

Verwandte Themen