Redis als PHP Session Handler nutzen (Quickie)

Besonders auf alten V-Servern kann das Session Handling über File etwas träge wirken. Dagegen kann man versch. RAM basierte Handler einsetzen. Ich bevorzuge wegen dem Support und der Geschwindigkeit Redis.

Redis installieren

System: Ubuntu 18.04.1 LTS

sudo apt update
sudo apt install redis-server
sudo apt install php-redis
redis-cli ping -> PONG

Wir installieren hier erst den Redis Server und danach das PHP Modul. Kommt nach dem redis-cli ping ein PONG hat es geklappt.

Nun können wir über

sudo nano /etc/redis/redis.conf

noch ein Passwort festlegen oder die IP Adresse über bind anpassen. In unserem Fall möchten wir den Redis-Server nur lokal nutzen, also passen wir nur unsere php.ini an (je nach eurem Einsatz hier die apache2 oder fpm)

FPM konfigurieren

sudo nano /etc/php/7.2/fpm/php.ini

-------

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

das sollte schon ausreichen. Jetzt noch noch php-fpm neustarten -> sudo service php-fpm restart und schon könnt Ihr testen ob es funktioniert:

 <?php
//Counter sollte sich immer um +1 beim refresh erhöhen
session_start();
$count = isset($_SESSION['count']) ? $_SESSION['count'] : 1;

echo $count;

$_SESSION['count'] = ++$count;

in phpinfo() sollte nun auch der neue Handler vorhanden sein.

3 Antworten auf „Redis als PHP Session Handler nutzen (Quickie)“

  1. Ist es hier eigentlich auch erforderlich einen db_index zu setzen?

    Sonst nutzt redis per default datenbank 0…
    Und möglicherweise kommt die Shopware-Redis einstellung in der Config dem in die queere ? Oder eine andere applikation, die redis nutzt.

    Viele Grüße

  2. Moin wollte einmal nachfragen, gibt es die Möglichkeit wenn in der PHP.ini der Session handler als redis gesetzt ist auch über den Standardweg auch den Sessionhandler zu customizen?
    Es gibt für php ja auch noch die Thematik mit dem Setzen eines SessionHandlers:
    https://www.php.net/manual/de/class.sessionhandler.php

    Nun habe ich eine Konstellation wo default als session handler redis gesetzt ist, ich aber darauf angewiesen bin eine Mischkonfiguration aus redis und einer separaten Datenquelle zu fahren und möchte den SessionHandler dahingehend über die entsprechende Klasse erweitern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.