Salut,

  Je ne te conseille pas de le mettre dans la méthode save() ou postUpdate()
ou autre.

  Prenons l'example d'un service MyStore avec 3 commandes :

   - insert($name, $description, $price) : renvoie un ID
   - modify($id, $name, $description, $price)
   - delete($id)

Une idée serait de créer un objet myStoreObject, avec comme interface :


   - __construct($id = null) // null = no ID
   - setName($name)
   - setDescription($description)
   - setPrice($price)
   - save() // throws myStoreException
   - delete() // throw myStoreException
   - *myStoreException : timeout, réponse inconnue, etc.*

Dans ton modèle, tu ajoutes une colonne my_store_id. Si c'est vide, ça veut
dire que tu ne l'as pas encore exporté.
Dans ton modèle, tu ajoutes une méthode getMyStoreObject(), et
setMyStoreObject()

Tu crées ensuite une action dans le controleur "exportToMyStore()" qui
ressemble à :

$id = $request->getParameter('id');
$model = MyTable::get($id);
$myStoreObject = $model->getMyStoreObject();
try
{
  $myStoreObject->save();
  $model->setMyStoreObject($myStoreObject);
  $this->result = "Success";
}
catch (myStoreException $e)
{
  $this->result = "Failed : ".$e->getMessage();
}


L'idée est là, mais ne couple pas myStore à ton modèle. Ce qui peut être
sujet à un timeout, un fail ou quoi que ce soit doit être isolé.

Alex'


Le 20 décembre 2009 03:55, goofy <[email protected]> a écrit :

> Bonjour,
>
> je doit synchroniser mes objets produits avec de multiple service web
> bon tous SOAP pour le moment (plateforme de vente en ligne Ebay,
> Amazon …) avec gestion des erreurs (par exemple si la connection est
> coupée). Si possible en temps réel sur chaque mise à jour plutôt que
> sur une tâche cron. J'ai un peu peur du script timeout si il y a trop
> de service web …
>
> Comment implémenter ça de manière éprouvée et fiable :
>
> - Sur quel "évènement" déclencher la synchro, dans le modèle sur la
> méthode save ou créer un Doctrine Behaviour sur Add or Update ?
> - Faire la synchro directement ou passer par une pile (Queue list) ?
>
> Bref je suis à la recherche d'idées, d'expériences, de conseil … :-)
>
> Merci et joyeuses fêtes de fin d'année …
>
> --
>
> Vous recevez ce message, car vous êtes abonné au groupe Google
> Groupes Symfony-fr.
> Pour envoyer un message à ce groupe, adressez un e-mail à
> [email protected].
> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse
> [email protected]<symfony-fr%[email protected]>
> .
> Pour plus d'options, consultez la page de ce groupe :
> http://groups.google.com/group/symfony-fr?hl=fr
>
>
>


-- 
Alexandre Salomé
http://alexandre-salome.fr

--

Vous recevez ce message, car vous êtes abonné au groupe Google 
Groupes Symfony-fr.
Pour envoyer un message à ce groupe, adressez un e-mail 
à [email protected].
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse 
[email protected].
Pour plus d'options, consultez la page de ce groupe : 
http://groups.google.com/group/symfony-fr?hl=fr


Répondre à