Utilisation de Redis pour le stockage de session
Commerce fournit désormais des options de ligne de commande pour configurer l’enregistrement de session Redis. Dans les versions précédentes, vous aviez modifié le fichier <Commerce install dir>app/etc/env.php
. La ligne de commande fournit la validation et est la méthode de configuration recommandée, mais vous pouvez toujours modifier le fichier env.php
.
Exécutez la commande setup:config:set
et spécifiez des paramètres spécifiques à Redis.
bin/magento setup:config:set --session-save=redis --session-save-redis-<parameter_name>=<parameter_value>...
where
--session-save=redis
active le stockage de session Redis. Si cette fonctionnalité a déjà été activée, omettez ce paramètre.
--session-save-redis-<parameter_name>=<parameter_value>
est une liste de paires paramètre/valeur qui configurent le stockage de session :
Problèmes connus avec phpredis et php-fpm.
Important : Si vous utilisez Redis pour plusieurs types de mise en cache, les numéros de la base de données doivent être différents. Il est recommandé d’attribuer le numéro de base de données de mise en cache par défaut à 0, le numéro de base de données de mise en cache de page à 1 et le numéro de base de données de stockage de session à 2.
suhosin.session.encrypt = On
).Problème connu avec des chaînes de plus de 64 Ko.
Définissez sur l’un des éléments suivants, répertoriés dans l’ordre entre au moins verbose et la plupart des verbose :
- 0 (urgence : seules les erreurs les plus graves)
- 1 (alerte : action immédiate requise)
- 2 (critique : composant d’application indisponible)
- 3 (erreur : erreurs d’exécution, non critiques mais devant être surveillées)
- 4 (avertissement : informations supplémentaires, recommandé)
- 5 (avis : état normal mais significatif)
- 6 (informations : messages d’information)
- 7 (débogage : informations les plus complètes à des fins de développement ou de test uniquement)
Exemple
L’exemple suivant définit Redis comme entrepôt de données de session, définit l’hôte sur 127.0.0.1
, définit le niveau de journal sur 4 et définit le numéro de base de données sur 2. Tous les autres paramètres sont définis sur la valeur par défaut.
bin/magento setup:config:set --session-save=redis --session-save-redis-host=127.0.0.1 --session-save-redis-log-level=4 --session-save-redis-db=2
Résultat
Commerce ajoute des lignes similaires à celles-ci à <magento_root>app/etc/env.php
:
'session' => [
'save' => 'redis',
'redis' => [
'host' => '127.0.0.1',
'port' => '6379',
'password' => '',
'timeout' => '2.5',
'persistent_identifier' => '',
'database' => '2',
'compression_threshold' => '2048',
'compression_library' => 'gzip',
'log_level' => '4',
'max_concurrency' => '6',
'break_after_frontend' => '5',
'break_after_adminhtml' => '30',
'first_lifetime' => '600',
'bot_first_lifetime' => '60',
'bot_lifetime' => '7200',
'disable_locking' => '0',
'min_lifetime' => '60',
'max_lifetime' => '2592000',
],
],
Vérification de la connexion Redis
Pour vérifier que Redis et Commerce fonctionnent ensemble, connectez-vous au serveur exécutant Redis, ouvrez un terminal et utilisez la commande Redis monitor ou la commande ping.
Redis monitor, commande
redis-cli monitor
Exemple de sortie session-storage :
1476824834.187250 [0 127.0.0.1:52353] "select" "0"
1476824834.187587 [0 127.0.0.1:52353] "hmget" "sess_sgmeh2k3t7obl2tsot3h2ss0p1" "data" "writes"
1476824834.187939 [0 127.0.0.1:52353] "expire" "sess_sgmeh2k3t7obl2tsot3h2ss0p1" "1200"
1476824834.257226 [0 127.0.0.1:52353] "select" "0"
1476824834.257239 [0 127.0.0.1:52353] "hmset" "sess_sgmeh2k3t7obl2tsot3h2ss0p1" "data" "_session_validator_data|a:4:{s:11:\"remote_addr\";s:12:\"10.235.34.14\";s:8:\"http_via\";s:0:\"\";s:20:\"http_x_forwarded_for\";s:0:\"\";s:15:\"http_user_agent\";s:115:\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36\";}_session_hosts|a:1:{s:12:\"10.235.32.10\";b:1;}admin|a:0:{}default|a:2:{s:9:\"_form_key\";s:16:\"e331ugBN7vRjGMgk\";s:12:\"visitor_data\";a:3:{s:13:\"last_visit_at\";s:19:\"2016-10-18 21:06:37\";s:10:\"session_id\";s:26:\"sgmeh2k3t7obl2tsot3h2ss0p1\";s:10:\"visitor_id\";s:1:\"9\";}}adminhtml|a:0:{}customer_base|a:1:{s:20:\"customer_segment_ids\";a:1:{i:1;a:0:{}}}checkout|a:0:{}" "lock" "0"
... more ...
Redis ping, commande
redis-cli ping
PONG
doit être la réponse.
Si les deux commandes ont réussi, Redis est configuré correctement.
Inspection des données compressées
Pour examiner les données de session compressées et le cache de page, RESP.app prend en charge la décompression automatique du cache de page et de session Commerce 2 et affiche les données de session PHP sous une forme lisible par l’utilisateur.