On Mon, 2007-07-09 at 16:56 +0200, Franz Remy wrote:
> Bonjour,
> 
> Est-ce-que quelqu'un sait comment faire un appel non bloquant à un autre
> programme  svp ?
> 
> Je m'explique :
> J'ai développé une simple appli web en Rails qui permet d'uploader des
> images sur le serveur et d'effectuer des traitements sur ces images. Ces
> traitements sont effectuer par d'autres programmes (c et c++) dont j'ai
> regroupé les différents appels dans un script ruby. Ensuite dans mon
> controlleur, je lance mon script ruby de la manière suivante :
> 
>     command="ruby mon_script.rb"
>     pipe = IO.popen command,"r"
>     @result = pipe.read
>     pipe.close
> 
> et je récupère les sorties des programmes par l'intermédiaire du pipe
> pour les afficher sur la page qui est renvoyée à l'utilisateur qui a
> envoyé les images.
> 
> Le problème, c'est que ces traitements sont assez couteux en temps et
> ressources, et j'aimerai pouvoir effectuer l'appel au script en mode non
> bloquant pour que si une autre personne veux venir uploader des images
> pendant que le serveur traite d'autres images, il puisse ne serait-ce
> qu'accéder à la page d'upload (ce qui n'est pas possible à l'heure
> actuelle tant que le traitement des autres images envoyées avant n'est
> pas fini).
> 
> Si vous avez une solution, je suis preneur !
> 

Idéalement, tu devrais implémenter une solution de tickets : une demande
crée un ticket dans ta base. Le ticket est traité par tes programmes en
c/c++ et son status est mis a jour avec le résultat. Enfin, il faut que
le client vérifie périodiquement l'état du ticket.

C'est plus ou moins ce qui est implémenté chez yahoo pour flickr.
-- 
Fabien Jakimowicz <[EMAIL PROTECTED]>

Attachment: signature.asc
Description: This is a digitally signed message part

Répondre à