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]>
signature.asc
Description: This is a digitally signed message part
