pctony Posted August 5, 2009 Share Posted August 5, 2009 Bonjour,Je me suis rendu compte d'un ralentissement sur le front du site après un import csv concernant la table des clients.Je vous fait part de mon fichier d'essai, avez-vous le même problème après l'avoir importé ?Je suis sous prestashop 1.2Merci d'avance,Cordialement. clients5.csv Link to comment Share on other sites More sharing options...
pctony Posted August 5, 2009 Author Share Posted August 5, 2009 SELECT p.*, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, p.`ean13`, i.`id_image`, il.`legend`, t.`rate`, m.`name` AS manufacturer_name FROM `ps_product` p LEFT JOIN `ps_product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = 2) LEFT JOIN `ps_image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) LEFT JOIN `ps_image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = 2) LEFT JOIN `ps_tax` t ON (t.`id_tax` = p.`id_tax`) LEFT JOIN `ps_manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`) LEFT JOIN `ps_category_product` cp ON (cp.`id_product` = p.`id_product`) INNER JOIN `ps_category_group` ctg ON (ctg.`id_category` = cp.`id_category`) INNER JOIN `ps_customer_group` cg ON (cg.`id_group` = ctg.`id_group`) WHERE p.`active` = 1 AND DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL 20 DAY)) > 0 AND (cg.`id_customer` = 0 OR ctg.`id_group` = 1) GROUP BY p.`id_product` ORDER BY p.`date_add` DESC LIMIT 0, 5 Temps de la requete : 79.45secSi je retire le INNER JOIN sur ps_customer_group, je passe à : 0.0830secLe site contient à peu près 1000 produits et 1000 clients.Cette nouvelle fonctionnalité de groupes me paraît dangereuse et gourmande en ressources pour les gros sites ?Des avis ? Link to comment Share on other sites More sharing options...
pctony Posted August 6, 2009 Author Share Posted August 6, 2009 Personne n'est inspiré ? Link to comment Share on other sites More sharing options...
Fre-do Posted August 6, 2009 Share Posted August 6, 2009 1.1 ou 1.2, sans être un spécialiste de la programmation, les ralentissements sur les grosses boutiques : celà ne me surprend pas... déjà en 1.1 les stats génèrent un gros ralentissement dès que le site comment en prendre du volume. (Même sur un serveur dédié). Je pense que dès qu'une boutique commence à prendre un gros volume, faut penser a l'alléger en désactivant certains modules et fonctions "non indispensables" afin d'optimiser la vitesse d'affichage. Link to comment Share on other sites More sharing options...
pctony Posted August 6, 2009 Author Share Posted August 6, 2009 73 secondes une requête pour amener 5 produits.. mais cela remet juste en cause la notion des groupes frontoffice (du moins son intégration dans les requêtes de la Class Product). Si je retire cela des requêtes, le site est rapide et les tests de charges sont correctes. Je tient à rappeller que je suis sous un presta 1.2 sans aucune modification de code ou de template, juste un import CSV de 1000 produits et 1000 clients.. Ceci est donc la limite (largement dépassé) de presta 1.2 ? Link to comment Share on other sites More sharing options...
pctony Posted August 6, 2009 Author Share Posted August 6, 2009 A vrai dire je ne comprned pas vraiment le besoin de faire un INNER JOIN sur la table des groupes. Cela marche très bien sans. Link to comment Share on other sites More sharing options...
tlandru Posted August 11, 2009 Share Posted August 11, 2009 J'ai le même soucis sur une boutique où l'on vient inscrire 6000 clients, tout va bien sans la table ps_customer_group mais une fois renseigné le site ne répond plus du tout.Je vais tenter de désactiver ce module car sinon les clients ne voit aucun produit. Link to comment Share on other sites More sharing options...
mathmenet Posted August 18, 2009 Share Posted August 18, 2009 Bonjour à tous,j'ai également le même problème !! J'ai environ 1780 clients et 1500 produits pour le moment et avec la catégorie défaut tout met des minutes à se charger.Par contre je ne sais pas dans qu'elle page, il faut retirer cette requete INNER JOIN sur ps_customer_group pour annuler cela? je veux bien connaître la page svp.J'ai l'impression que dès qu'il y a beaucoup de clients dans la catégorie défaut tout se ralentit alors que ce n'est pas le cas si je les transfert dans une autres catégorie ?? N'est ce pas plutôt un problème de programmation quelque part (sans critiques aucune pour la team presta) ???Du coup, je viens de tester avec un nouveau groupe "clients" qui a l'id 2 donc différent de celui par défaut 1 et j'ai mis à tous mes clients dans la table ps_customer_group l'id_groupe 2. J'ai fais de même pour les catégories pour qu'elle s'affichent dans le groupe défaut et dans le groupe clients.Là surprise la lenteur à disparue, seul bémol lorsqu'un client s'inscrit c'est de nouveau défaut dans la table s_customer_group qui se met, je suis donc obligé de mettre à la main le groupe 2.Config : Serveur dédié chez OVH Link to comment Share on other sites More sharing options...
tlandru Posted August 18, 2009 Share Posted August 18, 2009 Voici la solution optée :se rendre dans les fichiers /classes/product.php et /classes/category.phpModifier la fonction checkAccess pour les deux, en modifiant simplement le "return false" en "return true" qui se situe à la fin de la fonctionIl faut ensuite modifier le module blockcategories en modifiant la fonction hookLeftColumn du fichier blockcategories.phpMettre ce code à la place de l'existant : if (!$result = Db::getInstance()->ExecuteS(' SELECT DISTINCT c.*, cl.* FROM `'._DB_PREFIX_.'category` c LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.intval($params['cookie']->id_lang).') WHERE 1' .(intval($maxdepth) != 0 ? ' AND `level_depth` <= '.intval($maxdepth) : '').' AND (c.`active` = 1 OR c.`id_category`= 1) ORDER BY `level_depth` ASC, cl.`name` ASC')) return; $resultParents = array(); $resultIds = array(); Si tu as le moindre soucis, n'hésite pas Link to comment Share on other sites More sharing options...
mathmenet Posted August 18, 2009 Share Posted August 18, 2009 Merci Thomas pour cette réponse ultra rapide.Mais c'est avec regret, que je t'annonce que malgré tous les changements ça ne donne rien ! voilà ce que j'ai mis sur classes/Categories.php et classes/Product.php: public function checkAccess($id_customer) { if (!$id_customer) { $result = Db::getInstance()->getRow(' SELECT ctg.`id_group` FROM '._DB_PREFIX_.'category_group ctg WHERE ctg.`id_category` = '.intval($this->id).' AND ctg.`id_group` = 1'); } else { $result = Db::getInstance()->getRow(' SELECT ctg.`id_group` FROM '._DB_PREFIX_.'category_group ctg INNER JOIN '._DB_PREFIX_.'customer_group cg on (cg.`id_group` = ctg.`id_group` AND cg.`id_customer` = '.intval($id_customer).') WHERE ctg.`id_category` = '.intval($this->id)); } if ($result AND isset($result['id_group']) AND $result['id_group']) return true; return true; } Est ce bien celà ??et j'ai remplacé le code que tu m'a donné dans blockcategories.php à la ligne 103 juste après : $id_customer = intval($params['cookie']->id_customer); $maxdepth = Configuration::get('BLOCK_CATEG_MAX_DEPTH'); if (!$result = Db::getInstance()->ExecuteS(' SELECT DISTINCT c.*, cl.* FROM `'._DB_PREFIX_.'category` c LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.intval($params['cookie']->id_lang).') WHERE 1' .(intval($maxdepth) != 0 ? ' AND `level_depth` <= '.intval($maxdepth) : '').' AND (c.`active` = 1 OR c.`id_category`= 1) ORDER BY `level_depth` ASC, cl.`name` ASC')) return; $resultParents = array(); $resultIds = array(); En tous les cas j'ai laissé pour le moment comme j'ai dit, avec un second groupe actif et j'ai remplacé la valeur lors de l'inscription dans classes/Customer.php en 2 directement. Plus de manip à la main, un groupe qui sert à rien mais bon voilà pour le moment ça marche !! Je suis preneur d'une solution propre tout de même. Link to comment Share on other sites More sharing options...
tlandru Posted August 18, 2009 Share Posted August 18, 2009 Hum bizarre j'ai réalisé la manip hier soir et ca a passé tout seul...Tu es sous quelle version ? Link to comment Share on other sites More sharing options...
mathmenet Posted August 18, 2009 Share Posted August 18, 2009 1.2.1 mais je me rends compte maintenant que j'ai d'autres soucis comme par exemple :les recherches avec le block recherche rapide !! En fait lorsque je suis pas connecté je trouve rien et quand je suis identifier je peux faire des recherches.De plus en plus bizarre. Je fais un état des lieux et je te tiens au courant d'où j'en suis !!Merci en tous les cas de ton aide. Link to comment Share on other sites More sharing options...
tlandru Posted August 18, 2009 Share Posted August 18, 2009 Sans aucun soucis, ca m'intéresse grandement car on entre en prod sous peu Link to comment Share on other sites More sharing options...
mathmenet Posted August 19, 2009 Share Posted August 19, 2009 Salut Thomas,Alors voici mes premières conclusions :Si je fais avec tes modifs de code et pour l'affichage des catégories et des produits soit normal, il faut quand même vider la table ps_customer_group sinon ça rame toujours !! Est ce que toi tu as laissé cette table remplie ?En revanche je n'ai aucun résultats via au formulaire de recherche rapide (identifié ou non) sûrement car on squeeze id_group dans les pages modifiées précédemment et qu'il faut faire de même quelque part dans classes/search.php ?Idem avec le block fabricant qui liste les fabricants mais avec 0 produits à chaque fois.Voilà pour le moment.A la rigueur contact moi par MP je te donne l'adresse que tu puisse voir de tes propres yeux !! Link to comment Share on other sites More sharing options...
tlandru Posted August 19, 2009 Share Posted August 19, 2009 ma table ps_customer_group est vide effectivement, mais moi aucun soucis pour le moteur de recherche, idem pour le bloc fabricant, tout fonctionne ! Link to comment Share on other sites More sharing options...
mathmenet Posted August 21, 2009 Share Posted August 21, 2009 Salut, Thomas, je reviens te donner des nouvelles !!Bilan final pour moi, tout fonctionne, si je met mes clients en ps_customer_group = 2. Ne me demande pas pourquoi, j'en sais rien ! Mais l'essentiel c'est que tout fonctionne et sur tous les navigateurs !! Voilà normalement on passe en prod de la mise à jour début septembre. ( le temps de régler les derniers détails).Merci pour ton aide et à bientôt pour peut être ton module d'export. Link to comment Share on other sites More sharing options...
kiamaru Posted August 24, 2009 Share Posted August 24, 2009 salut tlandrutu peux me donner la ligne exacte des return false a changer, il y'en a un packet et je veux pas me tromper.site fonctionnais très bien et tout d'un coup des lenteur pas possible. pourtant serveur dédié chez 1and1.frmerci Link to comment Share on other sites More sharing options...
tlandru Posted August 24, 2009 Share Posted August 24, 2009 se rendre dans les fichiers /classes/product.php et /classes/category.phpLa fonction check access est tout en bas de ces fichiers, tu peux pas te tromper (sinon un coup de CTRL+F)Modifier la fonction checkAccess pour les deux, en modifiant simplement le “return false” en “return true” qui se situe à la fin de la fonction (il y a deux return dans check access à la fin de la fonction, modifier le deuxieme) Link to comment Share on other sites More sharing options...
kiamaru Posted August 24, 2009 Share Posted August 24, 2009 merci misteren fait ma lenteur venais du fait que j'ai recuperé le flux RSS d'un site de news qui etait plus en ligne depuis ce matin, donc le module ramait pour chercher les news merci pour la rapidité de ta réponse Link to comment Share on other sites More sharing options...
tlandru Posted August 24, 2009 Share Posted August 24, 2009 le combo alerte mail du forum et gmail ouvert en permanence font un ravage ^^ Link to comment Share on other sites More sharing options...
Jean-Bruno Posted September 7, 2009 Share Posted September 7, 2009 Salut à tousj'ai utilisé la methode de mathmenet et il y a un mieux indéniable… en attendant mieux ! Merci beaucoup Link to comment Share on other sites More sharing options...
DrÿSs' Posted September 8, 2009 Share Posted September 8, 2009 Bonjour,Nous travaillons dessus, une version corrigeant ce bug sortira demain. Link to comment Share on other sites More sharing options...
Jean-Bruno Posted September 8, 2009 Share Posted September 8, 2009 Cool merci Philippe et toute l'équipe ! 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