ich habe ein vermeintlich leichtes Problem bei den Datenbankeinstellungen für Shopware. Wir würden gerne persistente Datenbankverbindungen nutzen um die Performance zu optimieren. Sämtliche andere System (z.B. Revive Adserver) die wir nutzen bieten eine Einstellungsmöglichkeit, um Datenbankverbindungen persistent zu machen. Normalerweise kann ich persistente Verbindungen auch ermöglichen indem beim Host ein p: vorgestellt wird, also z.B p:127.0.0.1 anstatt 127.0.0.1. Wenn ich dies allerdings in der config.php von Shopware mache, lädt die Seite nicht mehr. Ich finde auch keinerlei Infos zum Thema persistente Datenbankverbindungen mit Shopware bei Google & Co. Ich hoffe ihr könnt mir helfen.
Das leidliche Thema mit dem Umleiten von HTTPS. Ist eher einfach zu lösen, hilft Martin aber nicht bei seinem eigentlichen Problem, dass, soweit ich das auf die schnelle sehe, nicht so einfach zu lösen ist.
Laut Doku muss PDO::ATTR_PERSISTENT direkt im Konstruktor übergeben werden, alle nachträglichen Aktionen, das noch zu setzen, sind nicht erfolgreich. Jetzt ist es aber so, dass in engine/Shopware/Components/DependencyInjection/Bridge/Db.php das setzen eines solchen Flags gar nicht vorgesehen ist.
Auch engine/Shopware/Configs/Default.php (dort sind alle möglichen Config-Flags gelistet) kennt für db kein persistent-Flag. Evtl. kann man noch was über die nicht dokumentiert Config-Variable ‚factory‘ erreichen, das hab ich mir aber nicht näher angesehen.
persistente Verbindungen sind ja grundsätzlich ein zweischneides Schwert - ob das sinnvoll ist oder nicht hängt unter anderem von der Konfiguration deines Apaches / deiner PHP Worker, der Anzahl der Webserver und der Frage ab, ob die DB auf einem eigenen Server läuft oder nicht. Insofern würde ich das an deiner Stelle probeweise erstmal in die \Shopware\Components\DependencyInjection\Bridge\Db::createPDO patchen und prüfen, ob das überhaupt zum erhofften Ergebnis führt. Da haben wir auch schon mit experimentiert und hatten durchwachsene Ergebnisse.
Falls dein Test aber positiv ist, hast du ab Shopware 5.2.22 (wenn ich das richtig sehe) die Möglichkeit, in deinem Datenbank-Konfigurations-Array zusätzlich eine PDO-Factory zu hinterlegen:
In deiner eigenen PDO-Factory bekommst du dann ebenfalls die $dbConfig reingereicht und kannst dann quasi die Shopware-PDO-Factory nachbauen und zusätzlich den gewünschten Constructor-Parameter setzen.
Auch wenn das bewusst ein undokumentiertes Feature ist (insofern keine Gewähr dafür :)), hast du damit zumindest die Möglichkeit an die PDO-Factory zu kommen, ohne dass das bei jedem SW-Update überschrieben wird.