Jump to content

Comment dupliquer des catégories et sous catégories


Recommended Posts

Bonsoir

 

Comment dupliquer des sous catégories sans à avoir comme je le fait actuellement à sytématiquement les recréer

J'aimerai pouvoir les dupliquer en ouvrant l'arboresence ... voila j'espère que je suis clair :)

 

Et comment classer ses catégories et sous catégories par ordre alphabéthique

 

Merci

 

Link to comment
Share on other sites

merci pour la réponse ... ça valait le coup d'insister :)

 

Effectivement les produits pour les dupliquer pas de soucis , si quelqu'un a une idée pour les catégories et sous catégories  , voila avis aux developpeurs de prestashop :rolleyes:

A mon avis ça doit intéresser du monde , que de temps perdu a chaque fois devoir recopier les sous catégories

Link to comment
Share on other sites

Bonjour

 

module prestacatégories de sitolog acheté

 

j'ai fait des essais hier et pour quelqu'un de completement novice comme moi le module a l'air d'être facilement exploitable 

 

Cependant quand on a une base de données qui est relativement important comme la mienne ça mets quinze plombes a charger !!!

 

Et lorsque j'ai fini et que je souhaite retablir le "fil d'ariane" ça bugg ça veut pas charger donc j'ai fini par l'arrêtrer ! 

Et pour finir j'ai dupliqué une sous catégories enfant qui est bien visible et validée dans mon admin mais sur le site je ne vois rien est ce que ça viens du fait que je n'ai pas rétabli de fil d'ariane !!!

 

Merci Olivier

Link to comment
Share on other sites

Tiens, c'est surprenant parce que l'application a été développée avec un soin très très particulier.

Les traitements aboutissent toujours. Il est surement normal que cela soit long si votre base de donnés est énorme, mais nous ne l'avons pas constaté avec la notre (1500 produits et quelques dizaines de sous-catégories).

 

On gagne un temps énorme avec cette application dans tous les cas, puisque sinon, il faut tout faire à la mano. Ou passer par un autre module payant (il y en a d'autres, mais attention les prix).

 

Vous pouvez contacter le développeur, il vous assistera sans souci.

 

Combien de catégories et de produits avez vous en tout ?

Edited by Hi-Commerce (see edit history)
Link to comment
Share on other sites

Bonjour

 

attention qu'on soit bien clair la dessus je ne critique pas

 

pour gagner du temps ça à l'air d'être le cas  

ma base doit au moins avoir 20000 produits et 200 a 300 sous rubriques donc ceci explique peut être cela

 

J'ai contacter le developpeur et j'attends une réponse

 

Merci Olivier  

Link to comment
Share on other sites

Pour charger ma base il faut bien au moins 10 minutes

 

et pour rétablir le fil d'ariane j'ai fini par arrêter au bout d'une vingtaine de minutes , donc j'ai cliqué sur la croix pour fermer le programme et il voulait rien savoir , j'ai fais controle alt + sup non plus , donc je suis parti faire autre chose en attendant que monsieur se reveille :wacko:

Link to comment
Share on other sites

Bonjour,

 

Je suis Franck, le développeur de PrestaCatégories.

 

Olivier1709 vient de m'appeler pour me faire par de son soucis. Il n'avait pas sa machine sous la main ni ses paramètres de connexion, on n'a donc pas pu aller bien plus loin (il doit me rappeler).

 

Mais effectivement, je confirme, 10 min pour charger 200 catégories, cela est tout à fait hors spéc.

 

Le record actuel est un autre site de vente de pièces détachées, de 32 000 catégories ! La effectivement, c'est un peu long, environ 15 min, mais cette étape franchie c'est très fluide.

 

Des sites de 100 à 300 catégories, il y en a beaucoup parmis les utilisateurs de PrestaCatégories et jamais le temps de lancement ne doit dépasser une ou deux min, grand maxi.

 

Autre info importante, le nombre de produits n'a aucune incidence sur le temps de lancement. Car à l'issue de cette étape, les produits ne sont pas affichés, seul l'arborescence des catégories est lue est affichée.

 

Quand à la regénération du fil d'Ariane, c'est normalement l'affaire de quelques secondes.

 

Donc, il y a un problème spécifique (comme par exemple des erreurs SQL en grand nombre qui parfois générent des pauses de protection coté serveur, ou un pb d'ADSL,...) , à découvrir. Je vous tiendrai au courant.

 

A+

Franck

Edited by Franck Bugnet (see edit history)
  • Like 1
Link to comment
Share on other sites

Bonjour,

 

Je viens d'avoir les infos de connexion d'Olivier et ai lancé PrestaCatégories.

 

A première vue je me suis dit qu'effectivement, c'était vraiment long pour 200 catégories. Sauf que une fois connecté, en 10 min effectivement, ce que je vois, ce n'est pas 200 ou 300 catégories mais exactement 30 240 !

 

Ca change un peu la donne quand même.

 

Autre info importante Olivier, je ne vois que 4023 produits (et non pas 20 000). A moins que je ne me sois trompé, cela signifie qu'il y a beaucoup de catégories sans aucun produit. Si les produits sont en cours d'importation, c'est logique, mais sinon il y a peut être matière à supprimer l'inutile.

 

Petite analyse cependant, pour voir ce que l'on peut essayer d'améliorer dans ce genre de très grosse configuration...

Le log de connexion:

15:51:50:22 Mise à zéro tables des catégories
15:51:50:23 Lecture et mémorisation liste des catégories
15:55:05:99 Mise en place des filtres sur fichier des catégories
15:55:06:14 Construction de l'arbre des catégories
16:00:30:84 Ré-organisation de l'arbre des catégories-30420 categories
16:00:30:86 Lecture des taxes pour le pays sélectionné
16:00:31:45 Lecture des taux de taxes
16:00:31:51 Lecture des groupes de clients
16:00:31:51 Construit la liste des noms de groupes de clients
16:00:31:85 Chargement terminé - PRET

 

On a la dedans (Lecture et mémorisation liste des catégories) à peut près 3min15s min qui sont de la lecture pure MySQL de ces 30240 catégories, avec leur description complète, donc sans aucun traitement (PrestaCatégories ne fait alors q'attendre le retour des données. Les seuls éléments sur lesquels ont peut travailler sont alors la vitesse du serveur SQL et la vitesse de transfert des données (ADSL)).

 

On peut cepandant aussi jouer sur les paramètres de compression et de cryptage des données.

Par défaut les données sont cryptées mais non compressées.

Lorse le volume de données est conséquent, comme ici, il peut être interessant d'essayer les deux autres modes proposés:

 

Mode compressées mais non cryptées:

16:16:32:22 Mise à zéro tables des catégories
16:16:32:23 Lecture et mémorisation liste des catégories
16:19:07:77 Mise en place des filtres sur fichier des catégories
16:19:07:89 Construction de l'arbre des catégories
16:24:35:16 Ré-organisation de l'arbre des catégories-30420 categories
16:24:35:17 Lecture des taxes pour le pays sélectionné
16:24:35:81 Lecture des taux de taxes
16:24:35:86 Lecture des groupes de clients
16:24:35:87 Construit la liste des noms de groupes de clients
16:24:36:05 Chargement terminé - PRET

 

La phase de lecture pure est passée à environ 2min30s. On gagne 1min15s soit 30% pour cette phase.

 

Le troisième mode (ni cryptage ni compression) n'apporte rien (étape de lecture réalisée en environ 3min):

16:27:57:56 Mise à zéro tables des catégories
16:27:57:57 Lecture et mémorisation liste des catégories
16:30:52:45 Mise en place des filtres sur fichier des catégories
16:30:52:57 Construction de l'arbre des catégories
16:36:16:79 Ré-organisation de l'arbre des catégories-30420 categories
16:36:16:81 Lecture des taxes pour le pays sélectionné
16:36:17:40 Lecture des taux de taxes
16:36:17:44 Lecture des groupes de clients
16:36:17:45 Construit la liste des noms de groupes de clients
16:36:17:59 Chargement terminé - PRET

 

Dans les deux seconds modes, que je conseille donc, le temps total pour cette base de 30240 catégories et de l'ordre de 7min30sec.

J'ai une connexion ADSL de campagne à 1M. On gagnerait sans doute beaucoup avec du très haut débit, mais c'est un autre sujet.

Je comprends que cela puisse paraitre long, même si tout est relatif.

 

Comment optimiser encore ?

 

Reste la seconde phase (Construction de l'arbre des catégories), environ 5min20s selon les modes. La dessus je peux essayer de gagner du temps en optimisant le code. Il s'agit d'une routine de type "ittérative" (qui s'appelle elle même) assez complexe, ayant pour role à partir de  liste de catégories reçues en vrac (classées par id), de reconstruire toute l'arborescence, mais également de vérifier la cohérence de l'ensemble, de chercher d'éventuelles catégories orphelines, etc...

 

Cette routine s'appelle ici elle même environ 30 000 x 30 000 / 2 , soit 450 000 exécutions du même code.

 

Un petit calcul rapide nous indique donc que le temps d'execution de cette routine est de l'ordre de 0,0007 sec.

 

Gratter du temps la dessus me semble quasi impossible. Je vais donc plutôt regarder si il est possible de trouver un autre algo qui reduirait le nombre d'ittérations.

 

Autre piste que je vais explorer: Actuellement et c'était voulu, pour avoir ensuite une appli fluide et confortable, la totalité des niveaux et catégories est lue est mémorisée lors de cette phase de lancement.

La question se pose donc de savoir si c'est une bonne approche pour les très grosses bases. Il est peut être plus interressant de faire ce que l'on voit partout ailleurs, à savoir de limiter cette première lecture au 1er niveau de catégories (ou tout du moins de le proposer en option).

 

Ici il n'y en a moins d'une dizaine, on passerait alors sous la barre du dixième de seconde pour lire et afficher le 1er niveau.

en contre partie, accéder aux sous catégories d'une catégorie de 1er niveau, puis au niveau suivant et ainsi de suite, nécessiterait également une relecture de la base, donc une certaine lenteur.

 

Autre inconvénient de cette approche, les opérations de recherche et de filtrage, actuellement locaux (puisque l'on a toute la structure sous la main) et donc rapides, ne seraient aussi possibles qu'en repassant par la base. Nettement plus lent...

 

Ou alors mettre en place un paginateur, comme dans PrestaShop, pour limiter la liste de catégories affichée à une portion de 200 par exemple et une flèche pour voir les 200 suivantes.

Je l'ai mis en place pour les produits (pas activée par défaut), mais cela ne me semble pas être génial pour les catégories. Perso je préferre attendre un poil au lancement et ensuite avoir toutes les données sous la main.

 

Bref histoire de choix et de compromis. Si vous avez un avis la dessus, partagez le...

 

En attendant, je remets le nez dans le code...

 

Cordialement

Franck

  • Like 1
Link to comment
Share on other sites

Bonsoir

 

Tout d'abord merci pour cette petite analyse , en espérant qu'elle puisse profiter à d'autres personnes

 

on se rend pas compte c'est dingue le nombre de catégories et sous catégories !!! je pensais pas en avoir autant

pour apporter quelques précisions il est normal qu'il y ai plus de catégories que de sous catégories puisque beaucoup de produits sont affectés à plusieurs catégories

 

Concernant le temps de chargement j'ai bien compris la problématique au vue de l'arboresence assez complexe , et encore aujourd'hui c'était de l'ordre de 8 minutes 

 

Par contre je me suis "amusé" à cloner une dizaine de sous catégories et a les affecter dans diverses catégories et pour finir j'ai du régénérer le fil d'ariane et au bout de 30 mm ça moulinait toujours !!!  donc je suis parti faire autre chose pour revenir 2 heures après et la "apparement" ça avait régénérer le fil d'ariane 

 

Je dis "apparement" parce que les sous catégories ne sont pas visibles sur le front office !!! elles sont visible dans le back office et elles sont bien activées ! alors je sais pas si la régénération du fil d'ariane a marchée ou pas ou si alors j'ai fais une mauvaise manip

 

Je vais faire une nouvelle tentative de régénération ce soir !!

 

Cordialement Olivier

Link to comment
Share on other sites

re essai donc hier soir avec régénération du fil d'ariane et j'ai pas mes sous catégories dans le front office

 

23:27:04:98  Initialisation des variables du programme
23:27:04:98 Initialisation des préfix des noms de tables
23:27:05:21 Vérification de la validité de la licence terminée, validité=1.
23:27:05:21 Connexion SQL
23:27:05:29 HTTP connection request result:: HTTP/1.1 200 OK<\r><\n>Date: Sat, 16 Nov 2013 22:27:03 GMT<\r><\n>Server: Apache<\r><\n>Vary: Accept-Encoding<\r><\n>Content-Length: 223<\r><\n>Connection: close<\r><\n>Content-Type: text/html; charset=utf-8<\r><\n><\r>
23:27:05:55 HTTP connection request result:: HTTP/1.1 200 OK<\r><\n>Date: Sat, 16 Nov 2013 22:27:04 GMT<\r><\n>Server: Apache<\r><\n>Vary: Accept-Encoding<\r><\n>Content-Length: 223<\r><\n>Connection: close<\r><\n>Content-Type: text/html; charset=utf-8<\r><\n><\r>
23:27:05:73 Connexion SQL établie. Préparation des classes I.
23:27:05:93 Lecture de la table de configuration de la base
23:27:06:01 Version de PS vue:  14820
23:27:06:01 Lecture du paramètre PS_legacy_images dans la base
23:27:06:10 PS_LEGACY_IMAGES=1
23:27:06:10 Lecture du paramètre PS_country_default
23:27:06:19 Connexion SQL complete. Lecture de la structure des tables de la base
23:27:06:19 I_Category allocation
23:27:06:38 I_Category Lang allocation
23:27:06:55 I_Product allocation
23:27:06:87 I_Product Lang allocation
23:27:07:05 I_Tax allocation
23:27:07:23 I_Category product
23:27:07:41 I_Lang allocation
23:27:07:60 I_Scene Category
23:27:07:77 I_Scene
23:27:07:96 I_Tax_rules
23:27:08:15 I_Discount_Category
23:27:08:33 I_Group
23:27:08:52 I_Group_Lang
23:27:08:69 I_Group_Reduction
23:27:08:88 I_Category_Group
23:27:09:05 Lecture des structures complète
23:27:09:15 Lecture de la langue par défaut du site dans la base
23:27:09:15 Multiboutiques:0
23:27:09:51 Initialisation de la table des produits
23:27:10:21 Lecture des groupes de règles de taxes
23:27:10:40 Initialisation fenêtre principale
23:27:10:55 Prêt
23:27:10:55 Cache ou montre les colonnes des tables
23:27:10:71 I_category filter
23:27:10:82 Routine d'affichage des catégories
23:27:10:82 Mise à zéro tables des catégories
23:27:10:82 Lecture et mémorisation liste des catégories
23:30:14:95 Mise en place des filtres sur fichier des catégories
23:30:15:05 Construction de l'arbre des catégories
23:35:40:27 Ré-organisation de l'arbre des catégories-30426 categories
23:35:40:28 Lecture des taxes pour le pays sélectionné
23:35:40:95 Lecture des taux de taxes
23:35:41:00 Lecture des groupes de clients
23:35:41:00 Construit la liste des noms de groupes de clients
23:35:41:09 Chargement terminé - PRET

Link to comment
Share on other sites

Bonjour Olivier,

 

Quelles sont les catégories (id ou noms?) qui n'apparaissent pas, je vais regarder pourquoi.

 

Votre Prestashop est bien en version 14820 ? (c'est ce que Prestashop indique à PrestaPricing). Si cela est une information erronée, cela peut expliquer le pb. Le remède est alors simplment de réinitialiser la partie back office du module  de façon à ce qu'il detecte lui même la bonne version de PS.

 

Edit 18/11: Pas de réponse ?

 

J'ai regardé la probématique du fil d'Ariane ce week end. Je vous proposerai bientôt une nouvelle version (beta 3.3.0.f) qui devrait ramener le temps de regénération du fil d'ariane à qcq chose de négligeable, à la fermeture de l'application (en appelant le script PHP de Prestashop plutôt qu'en envoyant une floppé de requètes SQL à distance).

 

Crdlt

Franck

Edited by Franck Bugnet (see edit history)
  • Like 1
Link to comment
Share on other sites

Bonjour,

 

Voila, la version beta 3.3.0.f est en ligne depuis qcq instants.

Attention: Cette version nécessite d'installer également la mise à jour 2.8 du module MPR (inclus dans le zip).

 

A présent la reconstruction du fil d'Ariane est effectuée coté serveur en PHP, et non plus coté application. Ainsi on gagne le temps nécessaire à l'envoie des nombreuses requêtes SQL.

 

J'ai aussi ré-écrit le code de rafraichissement de la table à l'écran, pour la phase mise à jour des colonnes nleft et nright (ce sont ces paramètres qui définissent les fils d'Ariane)

 

Essais réalisés sur une base de test contenant 10000 catégories:

-Régénération en sortie d'application: 10s (au lieu de 3 minutes avant)  :D

-Régénération en cours d'utilisation de l'application: 30s (au lieu de 5 minutes avant). Les 20s supplémentaires correspondent au temps de rafraîchissement de la table à l'écran.

 

Resterait à trouver un moyen pour radicalement accélérer le temps de chargement initial pour les très grosses bases, comme expliqué dans mon post plus haut. Par exemple en ne chargeant en mémoire qu'un ou deux niveaux de catégories. Mais cela poserait d'autres difficultés ensuite, car l'impossibilité de faire des recherches dans toute la structure.

En attendant de trouver le bon compromis, je laisse comme cela cette partie.

 

Franck

Edited by Franck Bugnet (see edit history)
  • Like 1
Link to comment
Share on other sites

petit retour et bilan concernant le module prestacatégories de sitolog 

 

Bilan très postif (moi non plus j'ai pas pas d'ations chez Sitolog ;) ) 

 

Temps de chargement inchangé en revanche ce qui est super positif c'est que le fil d'ariane est reconstruit en environ 7 minutes alors qu'avant au bout de deux heures rien ne se passait et ça buggait carrément

Rappellons quand même que mon site à plus de 30000 mille sous catégories

 

Le temps gagné est considérable

 

Donc concrètement super travail de franck et de surcroit facilement joignable

 

Voila ....  Merci Olivier  

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...