Jump to content

[RESOLU] Très grosse lenteur lorsque les déclinaisons sont activées sur le 1.5.4 ?


Recommended Posts

Bonjour tout le monde,

 

je fais actuellement une installation de la dernière version 1.5.4.1

J'ai environ 6000 produits, et 2000 catégories.

Les 6000 produits sont sans déclinaison mais je dois intégrer 5000 autres produits avec déclinaison.

 

Mais lorsque j'active les déclinaisons, le temps de chargement d'une page passe de 1 seconde à plus de 20 secondes !

J'ai fais plusieurs tests avec le thème d'origine, et les modules d'origine.

Les déclinaisons ont toutes été supprimées également.

L'activation des caractéristiques ne pose aucun problème de lenteur.

 

J'ai fais le test sur le 1.4 : aucun soucis.

J'ai fais le test en local : impossible, trop lent (20 secondes par page)

J'ai fais le test sur mon serveur dédiée : impossible aussi

 

Côté BO, aucun soucis dans tous les cas.

Avez-vous connu ce problème ?

Merci

 

 

PS : moi je penche sur une limitation du nombre de produits / catégories

Dès que j'ai dépassé une certaine valeur, c'est devenu super lent.

 

 

 

Edit : aucune page ne s'affiche désormais.

L'erreur affichée :

 

 

 

JSMin: Unterminated String at byte 682: '
Fatal error: Maximum execution time of 30 seconds exceeded in G:\wamp\www\monsite\classes\db\DbPDO.php on line 80

 

 

Edit : nombre de produit corrigé

Edited by kevin78 (see edit history)
Link to comment
Share on other sites

J'ai le même problème (version 1.5.4) la gestion des déclinaisons semble ultra pénalisante pour l'affichage des pages catégories et homefeatured.

Je pense que la requête SQL d'affichage des pages catégories et homefeatured est trop complexe (recherche des stocks pour chaque déclinaisons etc) n'ayant pas activé la gestion des stocks la requête devrait juste sélectionner les produit. Dans mon cas 40 produits / 100 et l'opération prend 10 secondes. Mais, mes produits ont tous plus de 3000 déclinaisons.

 

Un moyen, une idée pour résoudre ce problème ?

Merci

 

Si joint la requête qui prend 10 secondes

[/size]
SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, MAX(product_attribute_shop.id_product_attribute) id_product_attribute,
product_attribute_shop.minimal_quantity AS product_attribute_minimal_quantity, pl.`description`, pl.`description_short`, pl.`available_now`,
									pl.`available_later`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, MAX(image_shop.`id_image`) id_image,
									il.`legend`, m.`name` AS manufacturer_name, cl.`name` AS category_default,
									DATEDIFF(product_shop.`date_add`, DATE_SUB(NOW(),
									INTERVAL 0
											DAY)) > 0 AS new, product_shop.price AS orderprice
							FROM `ps_category_product` cp
							LEFT JOIN `ps_product` p
									ON p.`id_product` = cp.`id_product`
							 INNER JOIN ps_product_shop product_shop
			ON (product_shop.id_product = p.id_product AND product_shop.id_shop = 1)
							LEFT JOIN `ps_product_attribute` pa
							ON (p.`id_product` = pa.`id_product`)
							 LEFT JOIN ps_product_attribute_shop product_attribute_shop
			ON (product_attribute_shop.id_product_attribute = pa.id_product_attribute AND product_attribute_shop.id_shop = 1 AND product_attribute_shop.`default_on` = 1)
							 LEFT
					JOIN ps_stock_available stock
					ON (stock.id_product = p.id_product AND stock.id_product_attribute = IFNULL(`product_attribute_shop`.id_product_attribute, 0) AND stock.id_shop = 1  )
							LEFT JOIN `ps_category_lang` cl
									ON (product_shop.`id_category_default` = cl.`id_category`
									AND cl.`id_lang` = 1 AND cl.id_shop = 1 )
							LEFT JOIN `ps_product_lang` pl
									ON (p.`id_product` = pl.`id_product`
									AND pl.`id_lang` = 1 AND pl.id_shop = 1 )
							LEFT JOIN `ps_image` i
									ON (i.`id_product` = p.`id_product`) LEFT JOIN ps_image_shop image_shop
			ON (image_shop.id_image = i.id_image AND image_shop.id_shop = 1 AND image_shop.cover=1)
							LEFT JOIN `ps_image_lang` il
									ON (image_shop.`id_image` = il.`id_image`
									AND il.`id_lang` = 1)
							LEFT JOIN `ps_manufacturer` m
									ON m.`id_manufacturer` = p.`id_manufacturer`
							WHERE product_shop.`id_shop` = 1
									AND cp.`id_category` = 2 AND product_shop.`active` = 1 AND product_shop.`visibility` IN ("both", "catalog") GROUP BY product_shop.id_product ORDER BY cp.`position` ASC
					LIMIT 0,40;

Link to comment
Share on other sites

J'ai réglé le soucis.

Mais je ne sais toujours pas pourquoi et comment j'ai ce problème.

 

Ma solution a été de faire un "repair" de la BDD.

En quelques secondes, mon site a récupéré son temps de réponse normal

Essaie et tiens moi au courant

Link to comment
Share on other sites

Bonjour

 

Votre problème est résolu merci de bien vouloir mettre [Résolu] devant le sujet de votre 1er post en cliquant sur Modifier puis Utiliser l'éditeur complet.

 

Merci de ne pas utiliser ni d'abuser de la fonction Signaler qui est uniquement là pour signaler un abus ou une mauvaise tenue d'un membre ou les spam & topic ou post qui n'ont aucun rapport avec prestashop.

 

Le fait d'abuser peut vous valoir un avertissement mais les modérateurs sont magnanimes :)

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Salut Kevin,

désolé pour le temps de réponse mais je pensais recevoir des alertes si une personne répondait.

Comment fait tu un repair de la BDD ? C'est une option du Back Office ? Si oui tu peux me donner "le chemin" Merci

 

De mon coté j'ai bien avancé sur le sujet.

En retirant toutes les déclinaisons (donc passage de 3825 à 1) la boutique a retrouvé ses performances "normales"

Les déclinaisons sont donc clairement un facteur de fort ralentissement.

La solution que j'ai trouvé, et que j'ai mis en place, c'est l'achat du module Attribut wizard pro

Avec ce système je passe à 41 attributs pour exactement les mêmes combinaisons possible.

Mise en place assez complexe (mais le support est là pour aider) et logique pas tjs très logique mais le résultat est conforme à ce que j'espérais et j'ai plus non plus les messages d'erreur dans le back office (lié à la génération des combinaisons)

Link to comment
Share on other sites

  • 1 month later...

Amis des déclinaisons bonsoir,

 

Je pense que Attribut wizard pro est un super module, même si je n'ai fait que mater la démo.

 

Mais quand même, idéalement, j'aimerais bien que ça marche normalement en laissant le système de déclinaisons natif.

 

@kevin78 : j'ai fait un repair de toutes mes tables mysql, sans amélioration. N'avez vous rien fait d'autre que cela ?

 

Le post étant résolu, je n'ouvre pas plus la demande, mais si l'un ou l'autre avez une précision à apporter, je prends.

 

Merci !

Link to comment
Share on other sites

  • 9 months later...
  • 1 year later...

Bonjour,

 

Pour les pages blanches qui s'affiche, augmentez le timeout de php.ini, la taille maximal des requêtes ainsi que pour les requêtes SQL.

J'ai pu régler le problème d'affichage en back office avec ceci.

 

Maintenant pour optimiser le temps d'affichage de produits avec beaucoup de déclinaisons, car affichage encore trop long, "la solution" la plus efficace est de limiter l'exécution des requêtes sql à l'ouverture du produit.

 

Par ex seulement les déclinaisons par défaut, le reste deviendra sélectif (par sélection de l'utilisateur) et la requête en question est déclenché mais bien après le chargement initial de la page....

 

J’espère être clair..

 

Maintenant je me renseigne un peu plus.

Si vous avez un tuyau je suis preneur

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...