Was ist der beste Weg, Sitzungen für eine PHP-Website auf mehreren Hosts zu behandeln? [geschlossen]

StackOverflow https://stackoverflow.com/questions/76712

Frage

PHP speichert seine Sitzung Informationen über das Dateisystem des Host des Servers, die Sitzung aufgebaut wird. In einer PHP-Umgebung mit mehreren Hosts, wo Last unintelligent unter jedem Host verteilt wird, Variablen PHP-Session ist auf jede Anforderung nicht verfügbar (es sei denn, durch Zufall der Anforderung an den gleichen Host zugeordnet ist - übernehmen wir keine Kontrolle über den Load-Balancer haben) .

dieser Seite, genannt „The Tramper-Führer PHP Load Balancing " Session-Handler überwiegendes PHPs und Speichern von Sitzungsinformationen in der gemeinsam genutzten Datenbank vermuten lässt.

Was ist Ihre bescheidene Meinung nach, ist die am besten Weg Sitzungsinformationen in einer mehrere PHP-Host-Umgebung zu erhalten?

UPDATE: Vielen Dank für das tolle Feedback. Für alle, zum Beispiel Code suchen, fanden wir einen nützliche Tutorial eine Session Manager-Klasse für MySQL auf das Schreiben, das ich empfehlen, Check-out.

War es hilfreich?

Lösung

Datenbank oder Datenbank + Memcache. Generell Sitzungen sollten nicht zu sehr oft geschrieben werden. Beginnen Sie mit einer Datenbanklösung, die nur an die DB schreibt, wenn die Sitzungsdaten hat geändert . Memcache sollte später als Leistungssteigerung hinzugefügt werden. Eine db Lösung wird sehr schnell sein, weil Sie immer nur Primärschlüssel aufzublicken. Stellen Sie sicher, dass die db Zeilensperren hat, nicht Tabellensperren (MyISAM). MemCache nur eine schlechte Idee ist ... Wenn es überläuft, abstürzt oder neu gestartet wird, werden die Benutzer abgemeldet.

Andere Tipps

Was auch immer Sie tun, speichern Sie es nicht auf dem Server selbst (auch wenn Sie nur einen Server verwenden oder in einem 1 + 1-Failover-Szenario). Es wird Sie in einer Sackgasse stecken.

Ich würde sagen, die Verwendung Datenbank + Memcache zur Speicherung / Wiederherstellung, wird es Sie Umklammerung von Zend halten (und glauben Sie mir, die Dinge irgendwann mit Zend brechen nach unten). Da Sie leicht durch Benutzer-ID oder SessionID zu partitionieren der Lage sein, auch mit MySQL gehen die Dinge verlassen ganz skalierbar.

(Edit: zusätzlich mit DB + Memcache gehen Sie nicht binden an eine comercial Partei, ist es nicht Sie binden an PHP entweder - etwas, das man vielleicht für die Straße hinunter glücklich sein)

Das Speichern der Sitzungsdaten in einem DB arbeitet gemeinsam, kann aber langsam sein. Wenn es eine wirklich große Website, memcache ist wahrscheinlich eine bessere Option.

Je nach Budget Ihres Projekts können Sie auch Zend Platform für Ihre Produktionsmaschinen, die neben einer Reihe von anderen großen Features enthält konfigurierbare Session-Clustering, die wie ein CDN Art arbeitet betrachten Fall ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top