Heim > Backend-Entwicklung > PHP-Tutorial > So speichern Sie eine PHP-Sitzung in Redis

So speichern Sie eine PHP-Sitzung in Redis

藏色散人
Freigeben: 2023-04-04 17:28:02
nach vorne
3684 Leute haben es durchsucht

PHP unterstützt standardmäßig das Speichern von Sitzungen auf Redis ohne zusätzlichen Code.

Der von Redis zum Speichern der Sitzung verwendete Befehl ist setex, der mit dem Redis-Cli-Monitor zur Echtzeitüberwachung erkannt werden kann.

Setex-Befehlssyntax:

setex(key, time, value)
Nach dem Login kopieren

Dabei ist „key“ der Schlüsselwert, „time“ die Ablaufzeit und „value“ ein Wert vom Typ „String“.

Die spezifischen Schritte sind wie folgt.

1. Umgebung

Um eine Sitzung mit Redis zu speichern, müssen Sie zunächst die folgenden Bedingungen erfüllen:

Es muss ein Redis-Server installiert sein. In diesem Beispiel wird der lokale Server Redis verwendet, IP: 127.0.0.1, Port: 6379.

PHP hat die phpredis-Erweiterung installiert und Sie können die Erweiterung über phpinfo() sehen, wie unten gezeigt.

So speichern Sie eine PHP-Sitzung in Redis

PHP kann normal auf Redis zugreifen. Der Testcode lautet wie folgt:

<?php
    $redis = new Redis();
    $redis->connect(&#39;127.0.0.1&#39;, 6379);
    $count = $redis->exists(&#39;count&#39;) ? $redis->get(&#39;count&#39;) : 1;
    echo $count;
    $redis->set(&#39;count&#39;, ++$count);
Nach dem Login kopieren

Aktualisieren Sie die Seite. Wenn Sie sehen, dass die Zahl zunimmt, bedeutet dies, dass die Redis-Umgebung normal ist.

2. Konfigurieren Sie PHP

Nach der Installation der Redis-Erweiterung sehen Sie das Session-Support-Handle in der phpinfo()-Ausgabe, die Redis enthält, wie folgt:

So speichern Sie eine PHP-Sitzung in Redis

Zu beachten ist, dass die maximale Ablaufzeit von Redis 2147483647 beträgt, was 7fffffff im Hexadezimalformat entspricht.

Daher kann der Wert der Recyclingzeit session.gc_maxlifetime in der Sitzungskonfiguration diese Zahl nicht überschreiten.

Andernfalls ist die Ablaufzeit eine negative Zahl, wenn Redis den Befehl setex zum Speichern der Sitzung verwendet, was dem direkten Löschen des Schlüssels entspricht.

Dies wird nicht nur nicht erfolgreich gespeichert, PHP gibt auch den folgenden Fehler zurück:

Warning: Unknown: Failed to write session data (redis). Please verify that the current setting of session.save_path is correct (127.0.0.1:6379) in Unknown on line 0
Nach dem Login kopieren

Als nächstes ändern Sie die PHP-Konfiguration. Wählen Sie eine der folgenden Methoden.

2.1 php.ini ändern

Öffnen Sie die php.ini-Datei und legen Sie die folgenden zwei Werte fest:

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
Nach dem Login kopieren

Wenn Redis ein Passwort hat, verwenden Sie die folgende Konfiguration:

session.save_path = "tcp://127.0.0.1:6379?auth=password"
Nach dem Login kopieren

Nachdem die Konfiguration abgeschlossen ist, starten Sie PHP-FPM neu.

2.2 Ändern Sie php-fpm.conf

PHP-FPM-Konfigurationsdatei /etc/php-fpm.conf oder /etc/php-fpm.d/* In .conf, es gibt auch eine Sitzungskonfiguration.

Ihre Sitzungskonfiguration hat eine höhere Priorität als php.ini und überschreibt die Konfiguration in php.ini.

Ändern Sie es also direkt hier:

php_value[session.save_handler] = redis
php_value[session.save_path] = "tcp://127.0.0.1:6379"
Nach dem Login kopieren

Wenn Sie die php.ini-Konfiguration verwenden, müssen Sie diese beiden Zeilen mit ; ​​auskommentieren.

Dann PHP-FPM neu starten

2.3 PHP-Code

Sie können die Sitzung auch im laufenden PHP-Code wie folgt konfigurieren.

ini_set(&#39;session.save_handler&#39;, &#39;redis&#39;);
ini_set(&#39;session.save_path&#39;, &#39;tcp://127.0.0.1:6379&#39;);
Nach dem Login kopieren

3. Testen Sie

Schreiben Sie einen Teil des PHP-Testcodes wie folgt:

session_start();
$count = isset($_SESSION[&#39;count&#39;]) ? $_SESSION[&#39;count&#39;] : 1;
echo $count;
$_SESSION[&#39;count&#39;] = ++$count;
Nach dem Login kopieren

Wenn Sie die Seite aktualisieren und sehen, dass die Zahlen angezeigt werden Steigt die Zahl weiter an, bedeutet dies, dass Redis so konfiguriert werden muss, dass die Sitzung erfolgreich gespeichert wird.

PHP-Lernthema für chinesische Websites: PHP-Sitzung (einschließlich Bilder, Videos, Fälle)

Das obige ist der detaillierte Inhalt vonSo speichern Sie eine PHP-Sitzung in Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:歪麦博客
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