2009-07-13 10 views
3

Est-il possible que CakePHP exécute une tâche de shell cakephp en arrière-plan pour en exécutant de longs rapports. Je voudrais également mettre à jour l'état actuel retour à l'utilisateur via la mise à jour d'une table au cours du rapport la génération et l'interrogation en utilisant Ajax.Exécution des shells CakePHP en arrière-plan

Répondre

3

Oui, vous pouvez exécuter des obus dans l'arrière-plan par l'intermédiaire normal du système appelle comme

/path/to/cake/console/cake -app /path/to/app/ <shell> <task> 

La partie délicate est de commencer une manière asynchrone à partir de PHP; la meilleure option serait de mettre les travaux dans une file d'attente et de lancer le shell comme un travail cron de temps en temps, qui traite ensuite la file d'attente. Vous pouvez ensuite mettre à jour le statut du travail dans la file d'attente et interroger cette information via AJAX.

+0

Avez-vous une autre option? Parce que pour autant que je sache, les emplois cron peuvent être programmés seulement chaque minute. Alors, que se passe-t-il si le processus a été mis en file d'attente juste après le dernier travail cron, il doit attendre une minute, n'est-ce pas? – codegy

+1

J'avais l'impression que votre travail prenait plus de temps, donc une minute ou deux ne comptait pas. Voir ici: http://stackoverflow.com/questions/984577/php-need-a-cron-for-back-site-processing-on-user-signup-or-fork-process – deceze

+0

@deceze comment donner ce chemin -/chemin/vers/gâteau/console/gâteau -app/chemin/vers/app/ dans crontab? – Abhimanyu