xtaze Posted June 14, 2013 Share Posted June 14, 2013 (edited) Bonjour à tous, je suis en train de développer un système d'import produits de mon système d'erp vers prestashop via les webservices. L'ajout ou la modification d'un produit se déroule parfaitement mais est extrement long. Pour ajouter un produit, je fais appel à différents webservices (images, stocks, attribues, tags, ...). J'ai testé sur une machine en local et sur deux serveurs dont un dédié et le résultat est le même (entre 1 et 5 minutes pour créer un produit). Est ce que de votre coté c'est aussi long? avez vous des astuces ou conseils pour améliorer le temps ? exemple en mode debug : HTTP REQUEST HEADER GET /mon_site/v3//api/product_features?filter%5Bname%5D=%5BCoupe%5D HTTP/1.1 Authorization: Basic NlFZQUY4UTlSRlBEOERBUkFBM0FTWjNHRFU0Vk01Qks6 Host: localhost Accept: */* HTTP RESPONSE HEADER HTTP/1.1 200 OK Date: Fri, 14 Jun 2013 14:18:46 GMT Server: Apache/2.2.11 (Win32) PHP/5.3.0 Vary: Authorization,Host X-Powered-By: PrestaShop Webservice Access-Time: 1371219526 PSWS-Version: 1.5.3.1 Execution-Time: 0.04 Content-Sha1: a4ff575b372c403b3a996b98ef6e5e3ed2866664 Set-Cookie: 3f99a2f33f7744ef0eca694ec6b1a644=wmz8IN2kb07HUtQsn7ZQH%2F0uQS1ZjVTZypdt0cYnMZurUYiJNBRqPy%2BVEpyX5YM5%2BnG2JyRWXnuMe0YG5Iy7aw%3D%3D000060; expires=Thu, 04-Jul-2013 14:18:46 GMT; path=/mon_site/v3/; httponly Content-Length: 253 Content-Type: text/xml;charset=utf-8 RETURN HTTP BODY <?xml version="1.0" encoding="UTF-8"?> <prestashop xmlns:xlink="http://www.w3.org/1999/xlink"> <product_features> <product_feature id="534" xlink:href="http://localhost/mon_site/v3/api/product_features/534"/> </product_features> </prestashop> HTTP REQUEST HEADER GET /mon_site/v3//api/product_feature_values?filter%5Bvalue%5D=%5BMODULABLE%5D HTTP/1.1 Authorization: Basic NlFZQUY4UTlSRlBEOERBUkFBM0FTWjNHRFU0Vk01Qks6 Host: localhost Accept: */* HTTP RESPONSE HEADER HTTP/1.1 200 OK Date: Fri, 14 Jun 2013 14:18:48 GMT Server: Apache/2.2.11 (Win32) PHP/5.3.0 Vary: Authorization,Host X-Powered-By: PrestaShop Webservice Access-Time: 1371219528 PSWS-Version: 1.5.3.1 Execution-Time: 0.017 Content-Sha1: d2175e1fde07a059e89ea15778801852906e0352 Set-Cookie: 3f99a2f33f7744ef0eca694ec6b1a644=wmz8IN2kb07HUtQsn7ZQH8wet7VXVW%2FpEUEchxxUEsCrUYiJNBRqPy%2BVEpyX5YM547fXQns%2BQoQFmRPAxoucTg%3D%3D000061; expires=Thu, 04-Jul-2013 14:18:48 GMT; path=/mon_site/v3/; httponly Content-Length: 279 Content-Type: text/xml;charset=utf-8 Merci A+ Edited June 14, 2013 by xtaze (see edit history) Link to comment Share on other sites More sharing options...
J. Danse Posted June 14, 2013 Share Posted June 14, 2013 De mon côté, en C#, ce n'est pas spécialement si long que ça. J'utilise un pseudo cache, lorsque je récupère les éléments (surtout les Shop !) afin de ne pas générer un flux constant mais ça c'était pour la lecture de données. :-/ Link to comment Share on other sites More sharing options...
xtaze Posted June 14, 2013 Author Share Posted June 14, 2013 ok,c'est bon à savoir, de mon coté je suis en PHP et la version de presta et 1.5.3.1. voici un exemple de fonction pour la mise à jours des valeurs des options : public function getOptionValue ($valeur, $idOption,$idLang) { $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG); $tabvaleur = preg_split ("`:`", $valeur); $opt = array('resource' => 'product_option_values'); $opt['filter[name]'] = '['.$tabvaleur[0].']'; sleep(PS_TEMPO); $xml = $webService -> get($opt); //echo $tabvaleur[0]; if($xml->children()->children()->attributes()->id>0) { return $xml->children()->children()->attributes()->id; } else { $xml = $webService -> get(array('url' => PS_SHOP_PATH . '/api/product_option_values/?schema=blank')); $resources = $xml -> children() -> children(); $resources ->id_attribute_group = $idOption; $resources ->position = $tabvaleur[1]; $resources -> name->language[$idLang] = $this->addCData((string)$tabvaleur[0], $resources -> name -> language[$idLang][0]) ; try { $opt = array('resource' => 'product_option_values'); $opt['postXml'] = $xml -> asXML(); //echo "getOptionValue ". $tabAttribut[0]."<br>"; $xml = $webService -> add($opt); //on reccupere l'id inseré pour le mettre à jour $lastId = ($xml->children()->children()->id); //echo "id option value ".$lastId."<br />"; return ($lastId); } catch (PrestaShopWebserviceException $ex) { $this->getErrorsWebservice($ex); } } } 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