2009-12-18 12 views
5

J'ai un site web apache2/mod_perl. Sur une page, j'ai besoin de faire une communication serveur/serveur via SOAP.Comment puis-je différer le traitement pendant le rendu de la page apache/mod_perl?

Les résultats de cette communication ne sont pas requis pour le rendu de la page (mais la saisie de l'utilisateur est requise pour déclencher cette communication).

La communication SOAP est très lente.

Donc, ce que je veux faire est de traiter et d'imprimer la page pour l'utilisateur, puis faire toutes les choses SOAP dans les coulisses.

Quelle est la meilleure façon d'y parvenir? commencer une fourchette? écrire le travail dans un fichier et avoir un cronjob le ramasser?

Merci

Répondre

7

Il existe deux types de solutions: D'abord, vous pouvez faire ce que Randal Schwartz a suggéré here. Deuxièmement, vous pouvez utiliser une file d'attente de messages comme Beanstalk ou Gearman. Beanstalk a un client Perl et est maintenant persistant et est idéal pour les choses légères. Gearman, d'autre part a plus de fonctionnalités, plus travaillé. Il ya aussi TheSchwartz - utilisez-le si vous pouvez faire sans trop de documentation. cron est idéal pour répéter systématiquement des tâches. Pour le type d'application que vous avez, il semble que Schedule::At pourrait être plus approprié si vous préférez un « message-file d'attente » plus générique

Voir aussi un vieux StackOverflow Discussion here