Heim Backend-Entwicklung PHP-Tutorial Alternative Methode zur Sitzungsspeicherung: Redis

Alternative Methode zur Sitzungsspeicherung: Redis

Jul 30, 2016 pm 01:31 PM
function return session this

PHP verwendet standardmäßig Dateien zum Speichern von Sitzungen. Wenn die Parallelität groß ist, ist die Effizienz sehr gering. Redis bietet eine sehr gute Unterstützung für hohe Parallelität, sodass Sie Redis verwenden können, um Dateispeichersitzungen zu ersetzen.
Hier stellen wir die Funktion und Verwendung der session_set_save_handler-Funktion von PHP vor. Diese Funktion definiert Funktionen zum Speichern von Sitzungen auf Benutzerebene (z. B. Öffnen, Schließen, Schreiben usw.). Der Prototyp sieht wie folgt aus:

<code>bool session_set_save_hanler(callback open,callback close,callback read,callback write,callback destory,callback gc)
</code>
Nach dem Login kopieren

Bevor Sie diese Funktion verwenden, setzen Sie die Option session.save_handler in der Konfigurationsdatei php.ini auf user, andernfalls wird session_set_save_handle nicht wirksam.

Das Folgende ist ein Beispiel für die Verwendung von Redis zum Speichern von Sitzungen.

Schreiben Sie einen Sitzungsverwaltungsklassen-SessionManager. Der Code lautet wie folgt:

<code><?php

class SessionManager {
    private $reids;
    private $sessionSavePath;
    private $sessionName;
    private $sessi

    public function __construct() {
        $this->reids=new Redis();
        $this->reids->connect('127.0.0.1',6379);

        $retval=session_set_save_handler(
            array($this,"open"),
            array($this,"close"),
            array($this,"read"),
            array($this,"write"),
            array($this,"destroy"),
            array($this,"gc")
        );
}

public function open($path,$name) {
    return true;
}

public function close() {
    return true;
}

public function read($id) {
    $vale=$this->reids->get($id);
    if($vale) {
        return $vale;
    }else {
        return '';
    }
}

public function write($id,$data) {
    if($this->reids->set($id,$data)) {
        $this->reids->expire($id,$this->sessionExpireTime);
        return true;
    }
    return false;
}

public function destroy($id) {
    if($this->reids->delete($id)) {
        return true;
    }
    return false;
}

public function gc($maxlifetime) {
    return true;
}

    public function __destruct() {
        session_write_close();
    }
}

?>
</code>
Nach dem Login kopieren

Der SessionManager-Konstruktor wird hauptsächlich zum Herstellen einer Verbindung zum Redis-Server verwendet. Verwenden Sie die Funktion session_set_save_handler, um den Sitzungsrückruf festzulegen Funktion und rufen Sie die Funktion session_start auf, um die Sitzungsfunktion zu öffnen. Da die Callback-Funktionen open, close und gc in diesem Beispiel nicht sehr nützlich sind, geben sie direkt true zurück.
Verwenden Sie in der Rückruffunktion „Schreiben“ die Sitzungs-ID als Schlüssel, speichern Sie die Sitzungsdaten als Wert auf dem Redis-Server und legen Sie die Ablaufzeit der Sitzung auf 300 Sekunden fest. In der Leserückruffunktion wird die Sitzungs-ID als Schlüssel zum Lesen von Daten vom Redis-Server und zum Zurückgeben dieser Daten verwendet. In der Destroy-Callback-Funktion wird die Sitzungs-ID als Schlüssel zum Löschen der entsprechenden Sitzungsdaten vom Redis-Server verwendet.

Zur Verwendung schließen Sie einfach die SessionManager-Klasse ein und instanziieren ein SessionManager-Objekt. Erstellen Sie unten eine session_set.php-Datei. Geben Sie den Code

<code><?php
    include("SessionManager.php");
    new SessionManager(); //开启session管理
    $_SESSION['username']='hezikuang';//创建session变量
?>
</code>
Nach dem Login kopieren

ein und erstellen Sie dann eine session_get.php-Datei. Geben Sie den folgenden Code ein:

<code><?php
    include("SessionManager.php");
    new SessionManager(); //开启session管理
    echo $_SESSION['username'];
?>
</code>
Nach dem Login kopieren

Sie können auf session_get.php zugreifen, um zu sehen, ob es erfolgreich ist.

Urheberrechtserklärung: Dieser Artikel ist ein Originalartikel des Bloggers und darf nicht ohne die Erlaubnis des Bloggers reproduziert werden.

Das Obige stellt die alternative Methode der Sitzungsspeicherung, Redis, einschließlich der relevanten Inhalte vor. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So legen Sie das Sitzungszeitlimit in der SpringBoot-Sitzung fest So legen Sie das Sitzungszeitlimit in der SpringBoot-Sitzung fest May 15, 2023 pm 02:37 PM

Das Problem wurde im Springboot-Projekt-Produktions-Session-Out-Timeout gefunden: In der Testumgebung wurde der Session-Out durch Ändern der application.yaml konfiguriert, nachdem die Session-Out-Konfiguration überprüft wurde In Kraft trat, wurde die Ablaufzeit für die Veröffentlichung in der Produktionsumgebung direkt auf 8 Stunden festgelegt. Allerdings habe ich am Mittag die Rückmeldung von Kunden erhalten, dass die Projektablaufzeit kurz eingestellt wurde. Wenn eine halbe Stunde lang keine Aktion ausgeführt wird, läuft die Sitzung ab und erfordert wiederholte Anmeldungen. Lösen Sie das Problem der Handhabung der Entwicklungsumgebung: Das Springboot-Projekt verfügt über integriertes Tomcat, sodass der in application.yaml im Projekt konfigurierte Sitzungsausgang wirksam ist. Produktionsumgebung: Die Produktionsumgebung ist freigegeben

Detaillierte Erläuterung der Verwendung von Return in der C-Sprache Detaillierte Erläuterung der Verwendung von Return in der C-Sprache Oct 07, 2023 am 10:58 AM

Die Verwendung von return in der C-Sprache ist: 1. Für Funktionen, deren Rückgabewerttyp ungültig ist, können Sie die Rückgabeanweisung verwenden, um die Ausführung der Funktion vorzeitig zu beenden. 2. Für Funktionen, deren Rückgabewerttyp nicht ungültig ist, ist die Funktion von Die Return-Anweisung dient dazu, die Ausführung der Funktion zu beenden. 3. Beenden Sie die Ausführung der Funktion vorzeitig wenn die Funktion keinen Wert zurückgibt.

Was bedeutet Funktion? Was bedeutet Funktion? Aug 04, 2023 am 10:33 AM

Funktion bedeutet Funktion. Es handelt sich um einen wiederverwendbaren Codeblock mit bestimmten Funktionen. Er kann Eingabeparameter akzeptieren, bestimmte Operationen ausführen und Ergebnisse zurückgeben. Code, um die Wiederverwendbarkeit und Wartbarkeit des Codes zu verbessern.

So beheben Sie Sitzungsfehler So beheben Sie Sitzungsfehler Oct 18, 2023 pm 05:19 PM

Ein Sitzungsfehler wird normalerweise durch den Ablauf der Sitzungslebensdauer oder das Herunterfahren des Servers verursacht. Die Lösungen: 1. Verlängern Sie die Lebensdauer der Sitzung. 3. Verwenden Sie Cookies. 4. Aktualisieren Sie die Sitzung.

Was soll ich tun, wenn die PHP-Sitzung nach der Aktualisierung verschwindet? Was soll ich tun, wenn die PHP-Sitzung nach der Aktualisierung verschwindet? Jan 18, 2023 pm 01:39 PM

Lösung für das Problem, dass die PHP-Sitzung nach der Aktualisierung verschwindet: 1. Öffnen Sie die Sitzung über „session_start();“ 2. Schreiben Sie alle öffentlichen Konfigurationen in eine PHP-Datei 3. Der Variablenname darf nicht mit dem Array-Index identisch sein; 4. Überprüfen Sie einfach den Speicherpfad der Sitzungsdaten in phpinfo und prüfen Sie, ob die Sitzung im Dateiverzeichnis erfolgreich gespeichert wurde.

Lösung für das domänenübergreifende Problem der PHP-Sitzung Lösung für das domänenübergreifende Problem der PHP-Sitzung Oct 12, 2023 pm 03:00 PM

Lösung des domänenübergreifenden Problems von PHPSession Bei der Entwicklung der Front-End- und Back-End-Trennung sind domänenübergreifende Anforderungen zur Norm geworden. Wenn es um domänenübergreifende Probleme geht, nutzen wir in der Regel Sitzungen und verwalten diese. Aufgrund von Richtlinieneinschränkungen für den Browserursprung können Sitzungen jedoch standardmäßig nicht über Domänen hinweg gemeinsam genutzt werden. Um dieses Problem zu lösen, müssen wir einige Techniken und Methoden verwenden, um eine domänenübergreifende gemeinsame Nutzung von Sitzungen zu erreichen. 1. Die häufigste Verwendung von Cookies zum domänenübergreifenden Teilen von Sitzungen

So lösen Sie das Problem, dass die Timeout-Einstellung für die Springboot2-Sitzung ungültig ist So lösen Sie das Problem, dass die Timeout-Einstellung für die Springboot2-Sitzung ungültig ist May 22, 2023 pm 01:49 PM

Problem: Heute ist in unserem Projekt ein Zeitüberschreitungsproblem aufgetreten, und Änderungen an den application.properties von SpringBoot2 wurden nie wirksam. Lösung: Die server.*-Eigenschaften werden verwendet, um den eingebetteten Container zu steuern, der von SpringBoot verwendet wird. SpringBoot erstellt eine Instanz des Servlet-Containers mithilfe einer der ServletWebServerFactory-Instanzen. Diese Klassen verwenden server.*-Eigenschaften, um den kontrollierten Servlet-Container (Tomcat, Jetty usw.) zu konfigurieren. Wenn die Anwendung als WAR-Datei auf einer Tomcat-Instanz bereitgestellt wird, gelten die server.*-Eigenschaften nicht. Sie gelten nicht,

So implementieren Sie die SMS-Anmeldung in der Redis-Anwendung für gemeinsam genutzte Sitzungen So implementieren Sie die SMS-Anmeldung in der Redis-Anwendung für gemeinsam genutzte Sitzungen Jun 03, 2023 pm 03:11 PM

1. Implementieren der SMS-Anmeldung basierend auf der Sitzung 1.1 Ablaufdiagramm der SMS-Anmeldung 1.2 Implementieren des Sendens eines SMS-Bestätigungscodes Beschreibung der Front-End-Anfrage: Beschreibung der Anfragemethode POST-Anfragepfad/Benutzer/Code-Anfrageparameter Telefon (Telefonnummer) Rückgabewert Keine Back-End-Schnittstelle Implementierung: @Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1 Überprüfen Sie die Mobiltelefonnummer, wenn

See all articles