PHP
SESSION-Prinzip
Wir wissen, dass Sitzung eine Methode zum Verwalten von Benutzersitzungsdaten auf der Serverseite ist, und das entsprechende Cookie ist dies
Behalten Sie Benutzerdaten auf der Clientseite. Das HTTP-Protokoll ist ein zustandsloses Protokoll, nachdem der Server den Kontakt zum Browser verloren hat
Daten können seitenübergreifend vom Client ausgetauscht werden. Wie merkt sich der Server also die Sitzungsdaten vieler Benutzer?
Zunächst müssen der Client und der Server einzeln kontaktiert werden
Jeder Client muss über eine eindeutige Kennung verfügen, damit der Server ihn identifizieren kann. Es wird empfohlen, zwei Methoden zur eindeutigen Identifizierung zu verwenden: Cookie oder Angabe über GET. Die Standardkonfiguration von PHP verwendet Sitzung
Es wird ein Cookie mit dem Namen „PHPSESSID“ erstellt (kann durch Ändern des Werts „session.name“ in php.ini angegeben werden).
Sie können die abzurufende Sitzung auch über GET angeben
Die ID wird an den Server übertragen (Parameter wie session.use_trans_sid in php.ini ändern).
Wenn wir das serverseitige Verzeichnis session.save_path überprüfen, finden wir viele Dateien, die sess_vv9lpgf0nmkurgvkba1vbvj915 ähneln
Tatsächlich handelt es sich um die Daten, die der Sitzungs-ID „vv9lpgf0nmkurgvkba1vbvj915“ entsprechen. Die Wahrheit ist hier, dass der Kunde eine Sitzung durchführen wird
Die ID wird an den Server übergeben, und der Server übergibt sie entsprechend der Sitzung
Suchen Sie die entsprechende Datei anhand der ID. Deserialisieren Sie beim Lesen den Dateiinhalt, um den Sitzungswert zu erhalten. Beim Speichern wird zuerst serialisiert und dann geschrieben.
Das ist eine Tatsache
Wenn also der Server keine Sitzung unterstützt oder Sie die Sitzung anpassen möchten, können Sie über die Uniqid von PHP selbst eine Sitzung generieren, die niemals wiederholt wird.
id, und finden Sie dann einen Ort zum Speichern des Sitzungsinhalts. Sie können auch lernen, wie Flickr die Sitzung in einer MySQL-Datenbank speichert.
Warum müssen Sie session_start() ausführen, bevor Sie session verwenden?
Nach dem Verständnis des Prinzips handelt es sich bei der sogenannten Sitzung tatsächlich um eine Sitzungs-ID auf der Clientseite und eine Sitzung auf der Serverseite.
Wenn Sie session_start() vor dem Erstellen einer neuen Sitzung ausführen, wird der Server angewiesen, ein Cookie zu setzen und die Sitzungsdatei vorzubereiten
So speichern Sie Sitzungsinhalte: Durch Ausführen von session_start() vor dem Lesen der Sitzung wird der Server angewiesen, der Sitzung schnell zu folgen
id deserialisiert die Sitzungsdatei.
Vor session_start() kann nur eine Sitzungsfunktion ausgeführt werden: Lesen oder geben Sie den Sitzungsnamen an (der Standardwert ist beispielsweise „PHPSESSID“). Dies muss natürlich vor session_start ausgeführt werden.
Sitzung wirkt sich auf die Systemleistung aus
Sitzung
Die Systemleistung wird tatsächlich auf Websites mit hohem Verkehrsaufkommen beeinträchtigt. Einer der Gründe für die Beeinträchtigung der Leistung ist das Dateisystemdesign. Wenn sich mehr als 10.000 Dateien im selben Verzeichnis befinden, ist die Dateipositionierung sehr zeitaufwändig
Sitzungsverzeichnis-Hash, wir können session.save_path = in php.ini ändern
"2;/path/to/session/dir", dann wird die Sitzung in zweistufigen Unterverzeichnissen gespeichert, jedes Verzeichnis hat 16 Unterverzeichnisse [0~f], aber es scheint, dass PHP
Die Sitzung unterstützt das Erstellen von Verzeichnissen nicht. Sie müssen diese Verzeichnisse im Voraus erstellen.
Ein weiteres Problem ist die Effizienz kleiner Dateien
Die Sitzungsdaten werden nicht zu groß sein (1 bis 2 KB), wenn sich auf der Festplatte eine große Anzahl von 1 bis 2 KB befindet. Das PHP-Handbuch empfiehlt die Verwendung des Reiserfs-Dateisystems.
System, aber die Zukunft von Reiserfs ist besorgniserregend. Der Autor von Reiserfs hat seine Frau getötet, und auch SuSE hat Reiserfs aufgegeben.
Eigentlich gibt es noch viel mehr
Die Art und Weise, wie Sitzungen gespeichert werden, kann über php -i|grep „Registrierte Speicherhandler“ angezeigt werden, z. B. „Registrierte Speicherung“.
Handler => Dateien Benutzer SQLite
Eaccelerator kann über Dateien, Benutzer, SQLite und Eaccelerator gespeichert werden. Wenn der Server mit Memcached installiert ist, gibt es auch mmcache.
Optionen. Natürlich gibt es noch viele weitere, wie MySQL, PostgreSQL usw. Alles sind gute Entscheidungen.
Sitzungssynchronisation
Unser Frontend verfügt möglicherweise über viele Server. Der Benutzer meldet sich auf Server A an, pflanzt die Sitzungsinformationen ein und greift dann auf einige Seiten der Website zu und ist möglicherweise zu Server B gesprungen Zeit Wenn keine Sitzungsinformationen auf dem Server vorhanden sind und keine spezielle Verarbeitung durchgeführt wird, können Probleme auftreten.
Es gibt viele Arten der Sitzungssynchronisierung. Wenn Sie sie in Memcached oder MySQL speichern, können Sie sie einfach am selben Ort speichern. Wenn sie in Dateiform vorliegt, können Sie sie einheitlich speichern.
Eine andere Möglichkeit besteht darin, verschlüsselte Cookies zu verwenden. Wenn sich der Benutzer erfolgreich bei Server A anmeldet, wird ein verschlüsseltes Cookie im Browser des Benutzers platziert. Überprüfen Sie, ob ein solches vorhanden ist
Sitzung, falls vorhanden, stellt dies natürlich kein Problem dar. Wenn nicht, überprüfen Sie, ob das Cookie gültig ist, und stellen Sie die Sitzung auf Server B wieder her. Diese Methode ist eigentlich ziemlich
Dies ist sehr nützlich, wenn die Website über viele Unterkanäle verfügt, die Server nicht im selben Computerraum stehen, die Sitzungen nicht synchronisiert werden können und Sie sich einheitlich anmelden möchten.
Natürlich geht es auch anders
Es verwaltet die Sitzung auf der Lastausgleichsebene und bindet den Besucher an einen bestimmten Server. Eine Sitzungssynchronisierung ist nicht erforderlich. Sag das einfach
Es gibt so viele, entscheiden Sie sich dafür, die Sitzung entsprechend Ihrer eigenen Anwendung zu verwenden, denn jeder sagt, dass die Sitzung die Systemleistung beeinträchtigt, wenn Sie es sich nicht leisten können, zu beleidigen oder zu verstecken , Sie sind hier nicht geeignet.