2010-12-21 13 views
0

Ich weiß, dass ich keine globale Variable in meinem Backend-Code (Java oder PHP oder etwas anderes) haben kann und verschiedene Benutzer (und damit Sitzungen) den gleichen Wert sehen. Wenn ich einige Werte über diese Benutzersitzungen hinweg teilen muss, muss ich sie in eine DB schreiben und sie jedes Mal vorlesen. Das scheint mir furchtbar verschwenderisch.Freigabe von Variablen über mehrere Sitzungen hinweg

Ich verstehe, dass ein Apache-Prozess (oder der App-Server) wird abzweigen und so mit globalen Werten wird nicht funktionieren, aber wenn ich auf eine spezielle Anwendung schaue gibt es einen Webserver, der mich das tun? Dies sollte in einem Webserver möglich sein, der Threads anstelle von Forking-Prozessen verwendet. Aber wenn ich globalen Speicher teilen muss, muss ich eine Art von Sperren haben, um richtig darauf zugreifen zu können. Ich verstehe, dass es (und wird es meistens) wirklich fehlerhaft werden kann, aber wird es die Leistung im Vergleich zu einer DB verschlechtern?

Gedanken?

  • Pav

Antwort

0

Ich bin nicht sicher, dass ganz wahr ist. Apache wird jede Benutzerverbindung einzeln behandeln - richtig. Ich weiß jedoch, dass es in Java möglich ist, ein Singleton-Objekt zu haben, das für die Lebensdauer der Anwendung existiert, in dem Sie möglicherweise Werte speichern können, die in allen Benutzersitzungen verwendet werden.

Bei der Behandlung jeder Benutzerverbindung auf der Serverseite greift jeder Zugriff auf diesen Singleton auf das gleiche Objekt zu - daher die gleichen Werte.

Möglicherweise möchten Sie auch weitere Anwendungsbereiche für Anwendungsbereiche untersuchen. Ich bin mir nicht sicher, was genau Sie aufgrund eines fehlenden Anwendungsfalls erreichen möchten, aber Sie werden feststellen, dass Java-Web-Apps in diesem Bereich mehr leisten können, als Sie erwarten.

Verwandte Themen