Laravel Queues适用于多用户环境

时间:2016-09-12 11:34:34

标签: laravel laravel-5 laravel-5.2 laravel-5.1 laravel-queue

我正在使用Laravel 5.1,我的任务大约需要2分钟来处理,而这项任务特别是生成报告......

现在,显而易见的是,我无法让用户在我用户输入的同一页面上等待2分钟,而是应该在后台处理此任务并稍后通知用户关于任务完成......

因此,要实现这一点,Laravel提供Queues在后​​台运行任务(如果我没有理解错误),现在用于多用户环境,即如果多个用户需要生成报告(假设有4个用户),因此作为名为Queues的功能,是否意味着将一个接一个地执行任务(即当4个用户要求一个接一个地生成报告,然后是第四个用户'只有在生成第三个用户的报告时才会生成报告)??

如果Queues一个接一个地完成了他们的任务,那么无论如何都会根据用户的请求在后台立即处理哪些任务,并且用户可以在其任务完成后得到通知?

2 个答案:

答案 0 :(得分:0)

基于队列的架构并不复杂。请参阅Queue为您提供了与RabbitMQ,beanstalkd等不同消息传递实现的接口 现在,在代码中的任何一点,您都会向Queue发送发送消息,在此上下文中称为JOB。现在,您的队列将有多个作业,这些作业已准备好以FIFO顺序排出。

根据您的问题,有工作人员听队列,他们找到工作并执行它们。这取决于你想要多少工人。如果你有一个工人,你的任务将一个接一个地执行,更多的工人将是并行流程。

使用名为Artisan的laravel命令行界面启动工作进程。每个过程意味着一个工人。你可以和主管一起创办多个工人。

答案 1 :(得分:0)

由于您确定在约2分钟后将向用户发送通知,我建议使用cron作业检查是否每2分钟生成一次报告,如果有,您可以向用户发送通知。该检查将是一个简单的查询,因此不必担心性能太多。