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

Alternative Methode zur Sitzungsspeicherung: Redis

WBOY
Freigeben: 2016-07-30 13:31:56
Original
1069 Leute haben es durchsucht

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.

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage