Shopware Sessions mit Redis

PHP speichert im Standard alle Informationen einer Session auf dem Dateisystem. Bei einer hohen Zugriffszahl des Shops kann dieses Verhalten zu Performance-Probleme führen. Abhilfe schafft hier der Linux basierte In-Memory Dienst Redis.


Vorbereitung in Shopware

Zunächst muss für den Server ein Redis-Server zur Verfügung gestellt werden. Dieser kann entweder lokal auf dem App-Server oder extern z.B. via einem Accelerator-Server eingerichtet werden. Mehr Informationen zu unseren Accelerator-Servern finden Sie hier: https://www.creoline.com/de/products/redis-server


Für die Integration des Session-Handlers kann entweder die Einstellung direkt über die PHP-Laufzeitkonfiguration oder über die Einstellungen in Shopware durchgeführt werden.



Lösung 1) Konfiguration über den Shopware Server

Im Standard nutzt Shopware den Standard-Treiber für PHP-Sessions, sodass dieser einfach über die PHP-Einstellungen angepasst werden kann. Melden Sie sich hierzu via Plesk auf dem entsprechenden Server an und rufen Sie die PHP-Einstellungen des Shops auf.


Tragen Sie im Bereich „Zusätzliche Anweisungen“ folgende Werte ein:

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


Sofern der Redis-Dienst über einen Accelerator-Server angesprochen werden soll, nutzen Sie hierzu die VPC-Netzwerkadresse des entsprechenden Servers


Nachdem die Einstellungen gespeichert wurden, startet der PHP-Dienst automatisch neu, sodass alle PHP-Sessions ab sofort über den Redis-Server gesteuert werden.


Achtung: Durch diese Anpassung werden alle aktiven Sessions beendet, sodass bereits angemeldete Kunden einen neuen Login durchführen müssen.



Lösung 2) Konfiguration über die Shopware Umgebungskonfiguration

Erstellen Sie eine neue Konfigurationsdatei unter dem Pfad: config/packages/session.yaml. Mithilfe dieser Konfigurationsdatei kann die Session konfiguriert werden. Fügen Sie anschließend folgenden Inhalt in die Datei ein:

framework:
    session:
        handler_id: "redis://%env(REDIS_HOST)%:%env(REDIS_PORT)%/%env(REDIS_DB_SESSION)%"


In dieser Konfigurationsdatei werden folgende Umgebungsvariablen genutzt:

Variable Beschreibung
REDIS_HOST Hostname oder IP-Adresse zum Redis-Server
REDIS_PORT TCP-Port für Redis Verbindungen (Standard: 6379)
REDIS_DB_SESSION Redis-Datenbank für die Sessions


Die hier verwendeten Variablen müssen anschließend in der Umgebungskonfiguration .env.local von Shopware hinzugefügt werden. Öffnen Sie hierzu die .env.local Datei im Shopware Root-Verzeichnis und ergänzen Sie folgenden Teil in der bestehenden Konfiguration:

# .env.local

# [...]

# Session Configuration
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_DB_SESSION=0


Speichern Sie die Datei anschließend und leeren Sie den Shopware Cache über die Konsole:

bin/console cache:clear


Anschließend wird der Redis-Server zur Verwaltung der PHP-Sessions genutzt.



Shopware stellt in der offiziellen Dokumentation weitere Informationen und Adapter bereit.

Zur Shopware Dokumentation →