【问题标题】:Laravel queue nested processesLaravel 队列嵌套进程
【发布时间】:2021-07-14 16:37:24
【问题描述】:
我想使用队列来上传文件。用户可以上传文件。每个文件将有大约 500 行。现在我要实现这个逻辑:
- 最多可以同时处理 5 个文件。剩余的文件应该在队列中。
- 每个文件应该有5个进程,所以5行将同时插入数据库。很快,最多将有 25 个
进程(每 5 个文件中有 5 个进程)。
现在我将所有文件添加到一个队列中。文件一一处理。很快,先到先出。第二个文件需要等待完成第一个文件。
我该如何实现呢?或者您有什么其他建议?
【问题讨论】:
标签:
laravel
laravel-queue
【解决方案1】:
处理文件和将行插入数据库之间到底有什么区别?
如果您想为同一个队列运行多个工作器,您可以简单地使用php artisan queue:work 启动更多工作器,并另外使用标志来指定队列--queue=process-files。见the documentation。
在生产环境中,考虑configure a supervisor 使用numprocs 指令在队列上运行特定数量的工作人员。
我是否正确理解您希望每个用户运行 25 个队列工作程序?这似乎不对。相反,您应该考虑为快/慢作业创建队列。