J'ai quelques scripts qui doivent être exécutés simultanément en tant que processus distincts. Mon plan est d'avoir un travail cron qui exécute plusieurs instances de ces scripts à un intervalle défini. Est-ce une bonne idée? Quels sont les avantages / inconvénients à cette approche? Y a-t-il d'autres options que je dois envisager? P>
Bottomline: J'essaie d'imiter multithreading. Toutes les conditions de race seront traitées via le code (par exemple, des statuts de réglage dans dB, etc.). Les scripts sont censés traiter des tâches intensives (par exemple, créer des vignettes, etc.). P>
5 Réponses :
Vous pouvez utiliser le forking. Le script de démarrage chargerait toutes les configurations et initialisations par défaut, puis les processus enfants à fourche pour effectuer le traitement. Il pourrait ensuite surveiller les processus pour voir s'ils fonctionnent toujours. http://php.net/manual/fr/funck.pcntl-funck.php p>
ne PHP n'a pas Fourche () code>
? Bien que ce n'est pas vraiment multithreading, c'est un moyen de base de co-routines. P>
Eh bien, si vous en avez besoin comme un cronjob, allez-y. Si vous souhaitez plusieurs processus, vous souhaitez probablement utiliser PCNTL_FORK A > Pour créer plusieurs instances du même script. p>
Selon la rapidité avec laquelle vous souhaitez réagir à ces travaux et si vous cherchez à faire des tâches intensives de processeur, vous pouvez également étaler ce traitement à l'aide d'un système de file d'attente. Découvrez Gearman ou BeansTalkd avec plusieurs travailleurs par machine Si vous avez plusieurs cœurs / processeurs. P>
Un con d'utilisation de cron est qu'il exécutera une copie de votre script à l'intervalle que vous avez définie, quel que soit le nombre de processus de script exécutés déjà. Cela signifie que les scripts ont besoin d'un moyen de communiquer les uns avec les autres afin qu'un maximum de n scripts ne soit maintenu simultanément (les scripts excédentaires peuvent simplement quitter immédiatement). p>
Une alternative à cron pourrait être Supervisord qui exécutera un nombre configurable de scripts et surveiller chacun de sorte que la sortie sont révisées. P>