Traitement asynchrone ou les files d'attente en PHP (CakePHP)

Je suis en construction d'un site web dans CakePHP qui traite les fichiers téléchargés bien que XML-RPC de l'API et si une interface web. Les fichiers doivent être analysés par ClamAV, les vignettes doivent être générés, et cetera. Toutes les ressources d'un travail intensif qui prend un certain temps pour que l'utilisateur ne devrait pas avoir à attendre. Donc, je suis à la recherche dans le traitement asynchrone avec PHP en général et CakePHP en particulier.

Je suis tombé sur le Multitâche plugin pour CakePHP qui s'annonce prometteur. Je suis également venu à travers les différents messages de la file d'attente implémentations comme dropr et beanstalkd. Bien sûr, j'aurai aussi besoin d'une sorte de processus d'arrière-plan, probablement mis en œuvre à l'aide d'un Gâteau à la Coquille d'une certaine sorte. J'ai vu effectuer plusieurs tâches à l'aide de PHP_Fork à mettre en œuvre une multithread PHP démon.

J'ai besoin de quelques conseils sur la façon de s'adapter à toutes ces pièces ensemble de la meilleure façon.

  • Est-ce une bonne idée d'avoir une longue démon écrit en PHP? Que dois-je faire attention?
  • Quel est l'avantage de message externe de la file d'attente des implémentations? Le Multitâche plugin n'utilise pas un message externe de la file d'attente. Il roule, il est propre à l'aide d'une table MySQL pour stocker les tâches.
  • Ce message de la file d'attente dois-je utiliser? dropr? beanstalkd? Quelque chose d'autre?
  • Comment dois-je mettre en œuvre le backend processeur? Est un fork de PHP démon une bonne idée ou juste des ennuis?

Mon plan actuel est d'utiliser le Multitâche plugin ou de le modifier pour utiliser beanstald place de sa propre table MySQL mise en œuvre. Emplois dans la file d'attente peut simplement consister en un nom de tâche et un tableau de paramètres. Le PHP démon de regarder pour les travaux entrants et de les transmettre à l'un de ses threads. Le serait-il suffit d'exécuter l'CakePHP Tâche avec les paramètres donnés.

Opinions, des conseils, des commentaires, des pièges ou des flammes sur cette?