如果我在具有Laravel 4应用程序的服务器上运行带有Supervisor的Beanstalk,并且我希望它以异步方式处理所有队列 - 尽可能多的同时处理 - 我可以让多个侦听器同时运行时间?他们是否足够聪明,不会从队列中“拿走”相同的待办事项,或者他们是否会同时到达同一个项目,因此不能按照我想要的方式工作? 简而言之,我想一次使用队列来处理多个任务 - 可以这样做吗?
php artisan queue:listen && php artisan queue:listen && php artisan queue:listen
答案 0 :(得分:5)
简而言之,我想使用队列一次处理多个任务 - 这可以完成吗?
简而言之 - 是的,它可以做到。工人所从事的每项工作都会被锁定,直到它被释放。这意味着其他工人将获得不同的工作来处理。
IMO最好将Supervisor配置为运行多个queue:work
命令。它只需要一个作业,处理它并停止执行。
不鼓励在无限循环中运行PHP脚本(如queue:listen
那样),因为一段时间后它们可能会出现内存问题(泄漏等)。
您可以将Supervisor配置为重新运行已完成的工作人员。