Jump to content

peut-on accèlerer le traitement par webservice?


Recommended Posts

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 by xtaze (see edit history)
Link to comment
Share on other sites

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

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

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