


Wie speichere ich eine Sitzung im Memcached in PHP? So speichern Sie eine PHP-Sitzung verteilt
session_set_save_handler hat nichts mit der Methode von Memcached zum Speichern von Sitzungen zu tun
Auf dem Memcached-Server
1) Memcached herunterladen
#wget http://memcached.googlecode. com/files /memcached-1.4.15.tar.gz
2) Da Memcached von Libevent abhängt, müssen Sie zuerst die Libevent-Bibliothek installieren. Hier installieren Sie yum direkt
#yum install *libevent*
3)Memcached installieren
#./configure --prefix=/usr/local/memcached
#make
#make install
4) Starten Sie memcached
#/usr/local/memcached/bin/memcached -d -m 4096 -p 11211 -u root
-d daemon ?-p port -u ?user -m Memory
im Webserver Auf dem Server
5) Installieren Sie das PHP-Memcache-Modul auf dem Webserver
#/usr/local/php/bin/pecl install memcache
Memcache-Sitzungshandler-Unterstützung aktivieren? [Ja]: Ja (hier Ja auswählen)
6) Fügen Sie den folgenden Inhalt zu php.ini hinzu:
extension=/usr/local/php /lib/php/extensions/no- debug-non-zts-20090626/memcache.so
7) Ändern Sie session.save_handler und session.save_path in php.ini auf den folgenden Inhalt:
session.save_handler = memcache
session.save_path = "tcp://memcached server ip:11211"
Auch im PHP-Programm
ini_set('session.save_handler', 'memcache ');
ini_set ('session.save_path', 'tcp://memcached server ip:11211');
Hinweis: Diese Art der Verwendung von memcached zum Speichern der Sitzung hat nichts mit session_set_save_handler zu tun
Installation abgeschlossen Nach Memcached
in php.ini
ändern Sie session.save_handler in memcache und ändern Sie save_path so, dass es auf die Adresse und den Port von verweist memcached
session.save_handler = memcache
session.save_path = tcp://127.0.0.1:11211
Die PECL-Erweiterung von Memcache ist sehr leistungsstark und kann Failover und verteilten Speicher unterstützen.
Die Verwendung ist sehr einfach. Sie müssen lediglich Kommas verwenden, um jeden zwischengespeicherten Server in der Parameterliste von session.save_path zu trennen, wie zum Beispiel:
session.save_path = "tcp://". 172.16.8.81: 11211,tcp://172.16.8.82:11211,tcp://172.16.8.83:11211"
Die gespeicherte Sitzung wird gehasht und dann auf jedem zwischengespeicherten Server und dem Hash-Algorithmus gespeichert memcache unterstützt zwei Arten, crc32 und fnv:
memcache.hash_function= {crc32,fnv}
Der fnv-Algorithmus wird im Dokument selten erwähnt. Es wird gesagt, dass sein Hashing besser ist als crc32 , aber ich Nach dem folgenden kleinen Programmexperiment wurde festgestellt, dass der crc32-Hash-Algorithmus immer noch gleichmäßiger verteilt ist.
<?php ini_set("memcache.hash_function", "crc32"); $memcache = new Memcache; $memcache1 = new Memcache; $memcache2 = new Memcache; $memcache->addServer('localhost', 11211); $memcache->addServer('localhost', 11212); $memcache->flush(); $memcache1->connect('localhost', 11211); $memcache2->connect('localhost', 11212); $fp1 = fopen("mem1.txt", "w"); $fp2 = fopen("mem2.txt", "w"); for ($i = 0; $i < 1000; $i++) { $memcache->set($i, $i, 0, 1000); fwrite($fp1, $memcache1->get($i) . " "); fwrite($fp2, $memcache2->get($i) . " "); } fclose($fp1); fclose($fp2);
Dann habe ich das Speichern der Sitzung getestet
Ich habe 3 Memcached-Prozesse zum Testen geöffnet
<?php ini_set("memcache.hash_function", "fnv"); ini_set("error_reporting", "E_CORE_ERROR"); $memcache1 = new Memcache; $memcache1->connect('localhost', 11211); $memcache1->flush(); $memcache2 = new Memcache; $memcache2->connect('localhost', 11212); $memcache2->flush(); $memcache3 = new Memcache; $memcache3->connect('localhost', 11213); $memcache3->flush(); $fp1 = fopen('mem1.txt', 'w'); $fp2 = fopen('mem2.txt', 'w'); $fp3 = fopen('mem3.txt', 'w'); for ($i = 0; $i < 1000; $i++) { session_start(); $ssid = session_id(); echo $ssid; session_register("id"); $_SESSION["id"] = $ssid; session_write_close(); fwrite($fp1, $memcache1->get($ssid) . ' '); fwrite($fp2, $memcache2->get($ssid) . ' '); fwrite($fp3, $memcache3->get($ssid) . ' '); //session_destroy(); } fclose($fp1); fclose($fp2); fclose($fp3);
Das Seltsame ist, dass Memcached2 normalerweise fehlschlägt ,
und die Inhalte von 1 und 3 sind konsistent. Möglicherweise handelt es sich um ein Failover,
und wenn ich 1 und 3 ausschalte, wird Inhalt in 2 angezeigt, was darauf hinweist, dass memcached2 normal funktioniert.
Dieses Phänomen existiert unabhängig davon, ob mein Hashing-Algorithmus crc32 oder fnv verwendet
Endlich habe ich festgestellt: Es gibt ein Problem mit diesem Testprogramm.
Denn nach session_write_close ist die Sitzung des gesamten Programms eindeutig.
Das heißt, obwohl die Schleife so oft durchlaufen wurde, einschließlich session_destroy-Aufrufen, ist die zurückgegebene Sitzungs-ID dieselbe.
Dies führt dazu, dass der Inhalt in den beiden Dateien konsistent ist, die andere Datei jedoch keinen Inhalt hat.
Auf dieser Grundlage
kann ich das Skript nur stapelweise aufrufen. Ändern Sie es wie folgt:
<?php ini_set("memcache.hash_strategy", "consistent"); ini_set("memcache.hash_function", "crc32"); ini_set("error_reporting", "E_CORE_ERROR"); ini_set("memcache.allow_failover", "0"); $memcache1 = new Memcache; $memcache1->connect('localhost', 10001); $memcache1->flush(); $memcache2 = new Memcache; $memcache2->connect('localhost', 10002); $memcache2->flush(); $memcache3 = new Memcache; $memcache3->connect('localhost', 10003); $memcache3->flush(); $fp1 = fopen("mem1.txt", "a+"); $fp2 = fopen("mem2.txt", "a+"); $fp3 = fopen("mem3.txt", "a+"); session_start(); $ssid = session_id(); echo $ssid . "\n"; session_register("id"); $_SESSION["id"] = $ssid; //session_destroy(); session_write_close(); fwrite($fp1, $memcache1->get($ssid) . " "); fwrite($fp2, $memcache2->get($ssid) . " "); fwrite($fp3, $memcache3->get($ssid) . " "); session_destroy(); fclose($fp1); fclose($fp2); fclose($fp3);
Führen Sie es dann mehrmals in der Shell aus, und die zurückgegebene ID ist unterschiedlich.
Öffnen Sie die Datei mem*.txt und zeigen Sie sie an.
Es wurde festgestellt, dass von den drei Dateien jede Sitzung in zwei Dateien gespeichert wird und die Verteilung dann unterschiedlich ist.
Dies beweist, dass Memcache zum Speichern von Sitzungen verwendet wird. Zum einen wird ein Failover erreicht, zum anderen wird die Hash-Verteilung durchgeführt und entsprechend der Sitzungs-ID gespeichert.

PHP wird verwendet, um dynamische Websites zu erstellen. Zu den Kernfunktionen gehören: 1. Dynamische Inhalte generieren und Webseiten in Echtzeit generieren, indem Sie eine Verbindung mit der Datenbank herstellen; 2. Verarbeiten Sie Benutzerinteraktions- und Formulareinreichungen, überprüfen Sie Eingaben und reagieren Sie auf Operationen. 3. Verwalten Sie Sitzungen und Benutzerauthentifizierung, um eine personalisierte Erfahrung zu bieten. 4. Optimieren Sie die Leistung und befolgen Sie die Best Practices, um die Effizienz und Sicherheit der Website zu verbessern.

PHP verwendet MySQLI- und PDO-Erweiterungen, um in Datenbankvorgängen und serverseitiger Logikverarbeitung zu interagieren und die serverseitige Logik durch Funktionen wie Sitzungsverwaltung zu verarbeiten. 1) Verwenden Sie MySQLI oder PDO, um eine Verbindung zur Datenbank herzustellen und SQL -Abfragen auszuführen. 2) Behandeln Sie HTTP -Anforderungen und Benutzerstatus über Sitzungsverwaltung und andere Funktionen. 3) Verwenden Sie Transaktionen, um die Atomizität von Datenbankvorgängen sicherzustellen. 4) Verhindern Sie die SQL -Injektion, verwenden Sie Ausnahmebehandlung und Schließen von Verbindungen zum Debuggen. 5) Optimieren Sie die Leistung durch Indexierung und Cache, schreiben Sie hochlesbarer Code und führen Sie die Fehlerbehandlung durch.

Die Verwendung von Vorverarbeitungsanweisungen und PDO in PHP kann SQL -Injektionsangriffe effektiv verhindern. 1) Verwenden Sie PDO, um eine Verbindung zur Datenbank herzustellen und den Fehlermodus festzulegen. 2) Erstellen Sie Vorverarbeitungsanweisungen über die Vorbereitungsmethode und übergeben Sie Daten mit Platzhaltern und führen Sie Methoden aus. 3) Abfrageergebnisse verarbeiten und die Sicherheit und Leistung des Codes sicherstellen.

PHP und Python haben ihre eigenen Vor- und Nachteile, und die Wahl hängt von den Projektbedürfnissen und persönlichen Vorlieben ab. 1.PHP eignet sich für eine schnelle Entwicklung und Wartung großer Webanwendungen. 2. Python dominiert das Gebiet der Datenwissenschaft und des maschinellen Lernens.

PHP wird in E-Commerce, Content Management Systems und API-Entwicklung häufig verwendet. 1) E-Commerce: Wird für die Einkaufswagenfunktion und Zahlungsabwicklung verwendet. 2) Content -Management -System: Wird für die Erzeugung der dynamischen Inhalte und die Benutzerverwaltung verwendet. 3) API -Entwicklung: Wird für die erholsame API -Entwicklung und die API -Sicherheit verwendet. Durch Leistungsoptimierung und Best Practices werden die Effizienz und Wartbarkeit von PHP -Anwendungen verbessert.

PHP erleichtert es einfach, interaktive Webinhalte zu erstellen. 1) Generieren Sie Inhalte dynamisch, indem Sie HTML einbetten und in Echtzeit basierend auf Benutzereingaben oder Datenbankdaten anzeigen. 2) Verarbeitungsformularübermittlung und dynamische Ausgabe erzeugen, um sicherzustellen, dass HTMLSpecialChars zur Vorbeugung von XSS verwendet wird. 3) Verwenden Sie MySQL, um ein Benutzerregistrierungssystem zu erstellen und Anweisungen von Password_hash und Preprocessing vorzubereiten, um die Sicherheit zu verbessern. Durch die Beherrschung dieser Techniken wird die Effizienz der Webentwicklung verbessert.

PHP und Python haben jeweils ihre eigenen Vorteile und wählen nach den Projektanforderungen. 1.PHP ist für die Webentwicklung geeignet, insbesondere für die schnelle Entwicklung und Wartung von Websites. 2. Python eignet sich für Datenwissenschaft, maschinelles Lernen und künstliche Intelligenz mit prägnanter Syntax und für Anfänger.

PHP ist immer noch dynamisch und nimmt immer noch eine wichtige Position im Bereich der modernen Programmierung ein. 1) Einfachheit und leistungsstarke Unterstützung von PHP machen es in der Webentwicklung weit verbreitet. 2) Seine Flexibilität und Stabilität machen es ausstehend bei der Behandlung von Webformularen, Datenbankoperationen und Dateiverarbeitung; 3) PHP entwickelt sich ständig weiter und optimiert, geeignet für Anfänger und erfahrene Entwickler.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools