web-dev-qa-db-fra.com

Anciennes sessions non supprimées automatiquement de la base de données

J'utilise un site 3.8.5 avec un trafic important. En raison de certains problèmes récents, j'ai remarqué que le __session table n'est pas automatiquement rangée.

La durée de session est fixée à 1 heure (60 minutes), mais lorsque j'ai réalisé qu'il y avait un problème, la base de données contenait des sessions de plus d'un mois. J'ai tronqué le __session table il y a quatre heures et contient des sessions qui ont quatre heures, donc le ramassage des ordures ne semble pas fonctionner correctement.

Je ne peux pas être certain de l'heure exacte de la session la plus ancienne avant d'avoir tronqué le __session table, mais je pense que c'était les 30 et 31 janvier 2018. Cela peut être une coïncidence, mais cela serait en corrélation avec la publication de la version 3.8.4, qui inclut ceci demande d'extraction qui modifie la façon dont les sessions sont nettoyés.

Comment puis-je m'assurer que les sessions de base de données antérieures à 'session à vie' sont correctement supprimées?.

5
Dom

J'ai une solution après avoir lu les différentes demandes d'extraction sur GitHub, comme indiqué ci-dessus par Adam Gatt et Drew G.

Dans le récapitulatif des modifications pour github.com/joomla/joomla-cms/pull/19548 , il est indiqué que les données de session de la base de données sont effacées conformément au calendrier défini par le garbage collection probabiliste de la session PHP. En vérifiant ma configuration PHP, j’ai trouvé que le session.gc_probability variable a été définie sur zéro, la récupération de place de session ne s’exécutera jamais. En modifiant cette valeur à 1 (avec un diviseur de 1000), la table de sessions a été nettoyée périodiquement.

Je ne vais pas marquer cette réponse comme étant correcte car je pense que la réponse d'Adam Gatt, suggérant un changement de base de la base de données en tant que gestionnaire de session, est également valide. De plus, l'argument de Drew G sur le changement de gestion de session dans la prochaine version de Joomla rendra probablement tout cela inutile.

5
Dom

Je pense que des modifications ont été apportées à Joomla lors de la publication de la version 3.8.4 et que la table de session ne sera plus effacée si vous utilisez "Database" comme gestionnaire de session.

Voir ceci page sur Github .

La recommandation était de changer le gestionnaire de session de 'Base de données' à 'PHP'. Pour modifier ce paramètre, connectez-vous au backend du site Web. Accédez au menu Système -> Configuration globale. Accédez à l'onglet Système et faites défiler jusqu'à l'en-tête Paramètres de session. Sélectionnez PHP dans la liste déroulante de l'option Gestionnaire de session.

6
Adam Gatt