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
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).
Quelque chose comme POE serait utile? Il est plus axé sur les événements que fourchu, mais il peut répondre à vos besoins.
- 1. Comment planifier des tâches ponctuelles à partir d'une application Perl CGI?
- 2. Processus java longue durée
- 3. Comment gérer un "thread" de longue durée dans WPF?
- 4. Traitement d'un webrequest de longue durée
- 5. Comment créer un processus PHP de longue durée dans Apache?
- 6. Comment puis-je appeler un programme externe de longue durée à partir d'Excel/VBA?
- 7. Comment configurer Apache pour exécuter des scripts CGI Perl?
- 8. Utiliser preg_replace pour rogner variable PHP
- 9. Comment utiliser cURL ou Wget dans un programme Perl?
- 10. Comment abandonner une recherche de longue durée dans System.DirectoryServices.Protocols
- 11. Obtenir le résultat d'un processus Livecycle de longue durée
- 12. Configurer EasyPHP pour utiliser CGI
- 13. Comment puis-je lire le paramètre URL dans un programme CGI Perl?
- 14. Comment puis-je utiliser un processus d'arrière-plan à partir d'un script CGI Perl sous Windows?
- 15. gestion de session SQLAlchemy en processus de longue durée
- 16. Comment valider les dates dans un script CGI Perl?
- 17. Code de longue durée dans le processus asp.net
- 18. Enitity Framework avec contexte d'objet de longue durée
- 19. Comment mettre à niveau un flux de travail SharePoint de longue durée déjà en production
- 20. Héberger un assembly .net pour COM interop avec une longue durée de vie?
- 21. Comment puis-je utiliser du contenu CGI non tamponné à partir d'Apache 2?
- 22. Effacement de grands champs de la mémoire dans des objets de longue durée
- 23. Comment utiliser Perl pour analyser Twitter XML?
- 24. Comment puis-je utiliser Perl pour démarrer un processus distant et ne pas attendre qu'il se termine?
- 25. WinForm applications se bloquent l'interface utilisateur lors de l'opération de longue durée
- 26. Comment puis-je limiter un téléchargement dans un programme Perl?
- 27. Comment mieux utiliser jQuery pour générer des éléments HTML programme
- 28. Comment utiliser AfxOleGetMessageFilter dans un programme VB .NET?
- 29. Comment déterminer de manière fiable le nom d'un fichier téléchargé dans un script CGI Perl?
- 30. Comment puis-je définir le chemin d'inclusion de Perl pour les modules d'un script CGI?