klorydryk Posted June 11, 2018 Share Posted June 11, 2018 Bonjour, Je souhaite limiter la durée de conservation des données de connexion à mon site web. J'ai vu qu'il était possible de spécifier une durée : semaine, mois ou années au delà de laquelle les données sont supprimées. Voir dans "connection.php" : public static function cleanConnectionsPages() { $period = Configuration::get('PS_STATS_OLD_CONNECT_AUTO_CLEAN'); if ($period === 'week') $interval = '1 WEEK'; else if ($period === 'month') $interval = '1 MONTH'; else if ($period === 'year') $interval = '1 YEAR'; else return; if ($interval != null) { // Records of connections details older than the beginning of the specified interval are deleted Db::getInstance()->execute(' DELETE FROM `'._DB_PREFIX_.'connections_page` WHERE time_start < LAST_DAY(DATE_SUB(NOW(), INTERVAL '.$interval.'))'); } } Par contre, je ne sais pas du tout comment/où définir cette valeur de "Configuration::get('PS_STATS_OLD_CONNECT_AUTO_CLEAN')". Je l'ai ajouté à la table "ps_configuration", mais ça n'a rien changé. Quelqu'un saurait me dire comment on est censé faire ? Merci ! Link to comment Share on other sites More sharing options...
doekia Posted June 11, 2018 Share Posted June 11, 2018 Long a expliquer, mais je te deconseille expressement cette variable. Il est plus sage de faire un cron pour ça Link to comment Share on other sites More sharing options...
klorydryk Posted June 13, 2018 Author Share Posted June 13, 2018 Ok, merci. Par contre, le code parle de nettoyer la table "connection_page", mais après test, il semblerait que ce soit plutôt la table "connection" qu'il faudrait vider. Ou les 2 ? Quelle en est la différence ? Merci. Link to comment Share on other sites More sharing options...
doekia Posted June 13, 2018 Share Posted June 13, 2018 Je crois que nous ne nous comprenons pas. Cette fonction, abandonnée (sans notification d'ailleurs - mais en ayant laissé traîner le code bien m***ique) est juste une tueuse de performance. Si tu as 2 connexions simultanées à ton shop la 1ere lock la table pour faire le delete (normal) et mets donc la seconde en attente. C'est du code écrit pour des boutiques dînette avec jamais plus d'un visiteur à la fois - j'ose espérer que tu veux avoir plus que cela - alors abandonne cette fonction. D'autant qu'elle a été écrite sans aucune considération des contraintes d'intégrité du schéma. Et oui, PrestaShop (société) ne connaît pas PrestaShop (code). Il faut faire ce travail via cron, mais il n'y a pratiquement jamais besoin de faire cela. Ce n'est pas quelques gigas parfaitement indexé qui vont faire peur à ton moteur mySQL. J'ai des boutiques avec de gros débit et 100+ giga dans ces tables sans aucun problème. J'ai également écris un module pour purger les éléments (en cron) après un délai raisonnable (2 ans) - faudrait que je le package proprement pour le mettre en vente sur mon site (pas pris le temps en raison du peu d'interêt - donc marché pour celui-ci) https://aide.prestashop.click/topic/77/comment-vider-les-grosses-tables-gourmandes-comme-connections-guest-cart Link to comment Share on other sites More sharing options...
klorydryk Posted June 15, 2018 Author Share Posted June 15, 2018 Oui, je comprends bien qu'il ne faut pas utiliser cette fonction ! Je cherchais juste quelle table je dois vider dans mon CRON. Ce n'est pas pour limiter la taille de ma base, mais pour être compatible avec le RGPD : il n'y a aucune raison pour que je conserve des données de connexion de mes clients pendant des années. 1 mois me semble correct pour répondre à des problèmes de connexion qu'ils auraient. Je cherchais donc à comprendre à quoi servait la table "connection_page" vu qu'il me semble que la table qui contient les vraies valeurs de connexion (et celle que je dois vider) soit "connection" tout court. Merci ! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now