Rechercher :
Accueil » Sessions Connexion

Question Pourquoi le nombre d'enregistrements dans la table "sessions" de la base de données ne cesse d'augmenter?
Réponse En simplifié

Il y a de fortes chances que la valeur de "session.gc_probability" dans votre php.ini soit réglé sur 0, il faut alors la modifier à 1

En détails

les sessions sont initialisées en base par le code présent dans session.php
function _sess_gc($maxlifetime) {
      tep_db_query("delete from " . TABLE_SESSIONS . " where expiry < '" . time() . "'");

      return true;
    }

mais cette fonction est conditionnée par les valeurs de session.gc_divisor, en conjonction avec session.gc_probability qui définissent la probabilité que la routine gc (garbage collection) soit démarrée à chaque début de session. La probabilité est calculée en utilisant gc_probability / gc_divisor, e.g 1/100 signifie qu'il y a 1 % de chance pour que la routine gc démarre à chaque requête. Si gc_probability = 0 il n'y aura aucune chance que cestte routine soit executée

Il faut donc aller vérifier dans votre configuration serveur (php.ini) les deux variables cité plus haut, "session.gc_divisor" et "session.gc_probability", qui doivent être paramétré comme ceci:
session.gc_probability = 1
session.gc_divisor     = 100

J'ai lu qu'une valeur mise à 5 pour session.gc_probability et 100 pour session.gc_divisor était un bon compromis, a vous de voir !

Si vous n'avez pas accès au fichier php.ini de votre serveur, vous avez la possibilité de rajouter le code suivant dans les fichiers application_top.php du catalog et de l'admin

Pour modifier cette directive via un ini_set() en début de script, avant l'appel aux fonctions de sessions donc avant la ligne :
require(DIR_WS_FUNCTIONS . 'sessions.php');
il suffit de plaCER cette ligne
ini_set("session.gc_probability", "1");
Auteur : audioshop / NoZic Mise à jour le 09/10/2009

Retour