Session Handling: Eine Redis Instanz für zwei Shop Installationen?

Hallo liebe Shopware Community!

Ich würde gene zur Beschleunigung von zwei Shops (keine Subshops, sondern eigenständige Installationen) die Sessions in Redis speichern lassen. Allerdings wird im Sysadmin Guide keine Möglichkeit beschrieben einen speziellen Index/Prefix für die Keys zu verwenden. Kann man die beiden Shops trotzdem in die selbe Redis Instanz schreiben lassen, oder kann es bei den Session IDs (die als Key verwendet werden) zu Kollisionen kommen?

Beste Grüße :slight_smile:

Shopware benutzt als Prefix für die Keys die Revision der Shopware-Instanz, das geschieht damit bei Updates automatisch alle alten Caches geleert werden. Sollten beide Shops also immer auf unterschiedlichen Versionen laufen würde das funktionieren. :slight_smile:

Ansonsten versuch mal an der hier beschriebenen Stelle: config.php settings die Option “key_prefix” auf den gewünschten Wert zu setzen.

Hallo hsoebbing!  Smile

Danke für deine schnelle Antwort. Leider hat die Änderung nicht zu dem gewünschten Ergebnis geführt:

Ich habe es sowohl mit [‚cache‘][‚key_prefix‘], als auch mit [‚cache‘][‚frontendOptions‘][‚key_prefix‘] getestet.  Frown

Vielleicht die backendOptions? Im Zend-Sprech ist die Redis-Klasse ein “Backend”

Auch wenn das Feld in den backendOptions gesetzt wurde, hat das den Namen des Keys nicht beienflusst  Blush

Welche Shopware Version wird eingesetzt?

Aktuell 5.2.25 und 5.2.26.

Stell mal deine config bitte rein.

 [
        'host' => ' *******',
        'port' => ' *******',
        'username' => ' *******',
        'password' => ' *******',
        'dbname' => ' *******',
    ],
    'cache' => [
        'backendOptions' => [
            'key_prefix' => 'test_prefix'
        ]
    ],
    'session' => [
        'save_handler' => 'redis',
        'save_path' => "tcp://127.0.0.1:6379",
    ],
    'backendsession' => [
        'save_handler' => 'redis',
        'save_path' => "tcp://127.0.0.1:6379",
    ],
    'front' => [
        'showException' => true,
        'throwExceptions' => true,
        'noErrorHandler' => false,
    ],
    'backend' => [
        'showException' => true,
        'throwExceptions' => true,
        'noErrorHandler' => false,
    ],
    'phpsettings' => [
        'display_errors' => 1,
    ]
];

 

engine/Library/Zend/Session.php 

protected static $_defaultOptions = array(
        'save_path' => null,
        'name' => null, /* this should be set to a unique value for each application */
        'save_handler' => null,
        //'auto_start' => null, /* intentionally excluded (see manual) */
        'gc_probability' => null,
        'gc_divisor' => null,
        'gc_maxlifetime' => null,
        'serialize_handler' => null,
        'cookie_lifetime' => null,
        'cookie_path' => null,
        'cookie_domain' => null,
        'cookie_secure' => null,
        'cookie_httponly' => null,
        'use_cookies' => null,
        'use_only_cookies' => 'on',
        'referer_check' => null,
        'entropy_file' => null,
        'entropy_length' => null,
        'cache_limiter' => null,
        'cache_expire' => null,
        'use_trans_sid' => null,
        'bug_compat_42' => null,
        'bug_compat_warn' => null,
        'hash_function' => null,
        'hash_bits_per_character' => null
    );

Könnte man nicht den name  direkt in der config pro Shop setzen? So steht im Cookie nicht mehr SHOPWAREBACKEND - sondern der jeweilige Name und eine Überschneidung ist auch via Hash ([0 127.0.0.1:48902] “GET” “PHPREDIS_SESSION:d63a87711f8bcd488dd1596d2d005208399084b41eb4b944719cbc0412b9053b”
) fast unmöglich?

@schwäg‍ du musst beim save_path einen Parameter mitgeben, dann funzt das ganze. :slight_smile:

'save_path' => "tcp://127.0.0.1:6379?prefix=SHOP1_REDIS:",

Die Doku zu weiteren Parametern findest du HIER

1 „Gefällt mir“

@Misengo‍ führt zum gewünschten Ergebnis!  Smile Thumb-Up