2009-06-04 6 views
4

J'écris un planificateur de courrier en vrac commandé à partir d'une application Perl/CGI et voudrais apprendre les «bonnes» façons de fourcher un programme CGI pour exécuter une tâche distincte? Devrait-on le faire du tout? Ou est-il préférable de subir les frais généraux de l'exécution d'un moteur de file d'attente de travail distinct comme Gearman ou TheSchwartz comme cela a été suggested recently. La réponse/perspective change-t-elle lors de l'utilisation d'un framework proche de MVC tel que CGI :: Application over vanilla CGI.pm? Le dernier vient d'un projet possible que j'ai en tête pour un CGI :: Application Plugin - qui ferait «forking» un processus relativement simple à appeler.Comment puis-je utiliser un programme Perl CGI pour rogner des tâches de longue durée?

Répondre

9

Regardez Proc :: Daemon - c'est la chose la plus simple qui fonctionne. A partir de votre script CGI, lancez l'activité CGI (en obtenant une réponse, renvoyez une réponse au navigateur), puis appelez Proc :: Daemon :: init() qui fait la fourche, démonise votre processus et fait sortir le parent. Ensuite, votre script (maintenant un démon) fait ses tâches de longue durée et quitte quand elles sont terminées. Vous devez mettre à jour quelque chose (fichier, enregistrement de base de données) en cours d'exécution en tant que démon, afin que les invocations CGI suivantes puissent vérifier ce qu'il a fait (ou comment il progresse).

0

Quelque chose comme POE serait utile? Il est plus axé sur les événements que fourchu, mais il peut répondre à vos besoins.

Questions connexes