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.
Weiterführende Links
Shopware stellt in der offiziellen Dokumentation weitere Informationen und Adapter bereit.