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>
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>
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>
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>
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.