Exécutez PHP Tâche Asynchrone

Je travail sur un assez grand nombre d'applications web, et le backend est principalement en PHP. Il y a plusieurs endroits dans le code où j'ai besoin de remplir une certaine tâche, mais je ne veux pas faire de l'utilisateur d'attendre le résultat. Par exemple, lors de la création d'un nouveau compte, j'ai besoin de leur envoyer un e-mail de bienvenue. Mais quand ils ont frappé les "Terminer l'Inscription" du bouton, je ne veux pas les faire attendre jusqu'à ce que le mail est envoyé, je veux juste de commencer le processus, et de renvoyer un message à l'utilisateur immédiatement.

Jusqu'à maintenant, dans certains endroits, j'ai été en utilisant ce qui se sent comme un hack avec exec(). Fondamentalement, faire des choses comme:

exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &");

Qui semble fonctionner, mais je me demandais si il ya une meilleure façon. J'envisage l'écriture d'un système de files d'attente de tâches dans une table MySQL, et une exécution de script PHP qui interroge la table une fois par seconde, et exécute toutes les nouvelles tâches qu'il trouve. Cela aurait également l'avantage de me permettre de diviser les tâches entre plusieurs travailleurs machines dans le futur si je devais le faire.

Suis-je ré-inventer la roue? Est-il une meilleure solution que la méthode exec() hack ou le MySQL file d'attente?

InformationsquelleAutor davr | 2009-05-13