J'ai quelques scripts qui doivent fonctionner simultanément en tant que processus séparés. Mon plan est d'avoir un travail cron qui exécute plusieurs instances de ces scripts à un intervalle donné. Est-ce une bonne idée? Quels sont les avantages et les inconvénients de cette approche? Y a-t-il d'autres options à prendre en compte? Bottomline: J'essaie d'imiter le multithreading. Toutes les conditions de course seront traitées via le code (par exemple, définir les statuts dans la base de données, etc.). Les scripts sont supposés effectuer des tâches intensives de traitement (création de vignettes, etc.).PHP Concurrency via Cron
Répondre
Vous pouvez utiliser le forking. Le script de démarrage charge toutes les configurations et initialisations par défaut, puis les processus fils de fork pour effectuer le traitement. Il pourrait ensuite surveiller les processus pour voir s'ils sont toujours en cours d'exécution. http://php.net/manual/en/function.pcntl-fork.php
Est-ce que PHP n'a pas fork()
? Bien que ce ne soit pas vraiment multithread, c'est une manière basique de co-routines.
Eh bien, si vous en avez besoin comme un cronjob, allez-y. Si vous souhaitez plusieurs processus, vous souhaitez probablement utiliser pcntl_fork pour créer plusieurs instances du même script.
Selon la rapidité avec laquelle vous souhaitez réagir à ces tâches et si vous souhaitez effectuer des tâches exigeantes en matière de processeur, vous pouvez également étendre ce traitement à l'aide d'un système de mise en file d'attente. Découvrez Gearman ou beanstalkd avec plusieurs travailleurs par machine si vous avez plusieurs cœurs/processeurs.
Une des utilisations de cron est qu'il exécute une copie de votre script à l'intervalle que vous avez défini, quel que soit le nombre de processus de script en cours d'exécution. Cela signifie que les scripts ont besoin d'un moyen de communiquer les uns avec les autres afin qu'un maximum de N scripts soient exécutés simultanément (les scripts en trop peuvent simplement quitter immédiatement).
Une alternative à cron pourrait être supervisord qui exécutera un nombre configurable de scripts et surveillera chacun afin que toutes les sorties soient réapparues.
- 1. Travaux PHP et Cron
- 2. Paramètres sur les fichiers php exécuter via Cron
- 3. Exécuter PHP via cron - Aucun fichier d'entrée spécifié
- 4. Comment exécuter un fichier CodeIgniter via CRON?
- 5. Migration de concurrency Java concurrency Scala
- 6. Créer des événements facebook via cron-job
- 7. WCF Concurrency
- 8. MongoDB Concurrency
- 9. php exec tar échoue lors de l'exécution via cron, fonctionne via le shell
- 10. Entity Framework ObjectContext: Concurrency
- 11. travail cron de longue date via wget/curl?
- 12. Multiple fork() Concurrency
- 13. Concurrency du thread
- 14. java concurrency missions
- 15. mysqli_use_result() et concurrency
- 16. Comment accéder à une fonction MVC via un travail cron?
- 17. lancer cron sur xampp
- 18. Impossible d'exécuter le script PHP cron
- 19. Cron emplois et script php question
- 20. Ajouter un script php à cron
- 21. Comment accélérer PHP Mail? (using CRON)
- 22. php cron job toutes les 10 minutes
- 23. Comment automatiser mon script cron php
- 24. Comment déterminer si un fichier PHP est chargé via cron/ligne de commande
- 25. exécuter un script php via cron, comment puis-je enregistrer une sortie?
- 26. PHP: Erreur lors de l'exécution d'un script via le travail Cron
- 27. émet .NET C# Socket Concurrency
- 28. LINQ to SQL: Concurrency résolution
- 29. Lecteur multimédia Android Threading/Concurrency
- 30. Concurrency: Qu'est-ce qu'un canal?