Jump to content

Webservices et performances désastreuses


Recommended Posts

Bonjour,

Nous tentons d'utiliser les webservices pour alimenter plusieurs déploiements de Prestashop avec nos produits/catégories/fournisseurs et les liens relationnels qui vont avec.

 

Nous exportons ces items et leurs liaisons dans des fichiers textes dans le répertoire de prestashop.

L'idée est de faire tourner une boucle de lecture du fichier et d'utiliser la méthode add pour importer les catégories , via la fonction :

public function addCategorie($xmldetail, $webService, $name, $idParent, $isRoot) {
        $resources = $xmldetail -> children() -> children();
        unset($resources ->id);
        unset($resources ->position);
        unset($resources ->date_add);
        unset($resources ->date_upd);
        unset($resources ->id_parent); //if unset category will be root. If set it must have id existing parent category!
        unset($resources ->level_depth);
        unset($resources ->nb_products_recursive);
        $resources ->id_parent = $idParent;
        $resources ->name ->language[0][0] = addslashes($name);
        $resources ->link_rewrite->language[0][0] = strtolower($this->removeAccents($name));
        $resources ->active = 1;
        $resources ->id_shop_default = 1;
        $resources ->is_root_category = $isRoot;


        $opt = array('resource' => 'categories');
        $opt['postXml'] = $xmldetail -> asXML();

        return $webService -> add($opt);

N.B. hors sujet : un tableau temporaire est alimenté par la liste les catégories et récupère l'id au passage pour reconstituer l'arborescence.

 

Cela fonctionne mais est extraordinairement lent, par exemple il faut une heure pour intégrer 600 catégories.

Existe-t-il une solution pour améliorer les performances du webservices ou faut-il utiliser une autre méthode ?

 

Romain

 

Link to comment
Share on other sites

Bonsoir,

 

Ayant pu travailler sur ce genre de problématique (une mise à jour quotidienne d'une multitude de produits/catégories), je peux vous affirmer que cela prends énormément de temps avec l'outil des webservices actuel.

 

Pour pallier à ce soucis d’exécution très lente, nous avions opté pour une solution quasi identique mais sur mesure: un module.

 

Ce module servait en fait de webservice, mais n'utilisait que les associations souhaitées sur base de ce qu'on lui envoyait.

 

Personnellement, je vous conseille de réaliser un module de traitement de données si vous avez la possibilité d’interagir avec (dans notre cas, le client synchronisait son programme interne avec son site en ligne) :)

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