Bre*_*ite 5 laravel laravel-queue
我需要向Laravel队列提交大量作业,以处理一些上传的CSV文件。如果文件较小,则这些作业可以在一秒钟内完成;如果文件较大,则可以在几秒钟内完成;如果CSV文件很大,则可能需要一分钟才能完成。而且我无法提前告知文件的大小。
当用户转到“结果”页面时,我需要显示结果-但前提是队列已完成作业。如果队列仍在处理中,则需要显示“稍后重试”消息。
所以-有没有一种方法可以从控制器检查队列是否已完成?
我目前正在使用Laravel 5.1,但如果有帮助的话,会很乐意升级。而且我目前正在使用数据库队列驱动程序。理想情况下,我很想找到一种适用于所有队列驱动程序的通用技术,但是如果唯一的方法是检查数据库表,那么我想这就是我要做的。
谢谢!
小智 7
我知道这已经有一年了,但为什么不根据该请求使用唯一键为每次上传创建一个新队列。
$job = (new ProcessCSVJob($data))->onQueue($uniqueQueueName);
Run Code Online (Sandbox Code Playgroud)
如果您想要仅数据库解决方案,您可以简单地在数据库中的队列名称字段中进行计数。
要处理所有队列类型,您可以使用 Queue size 方法返回队列大小。
$queue = App::make('queue.connection');
$size = $queue->size($uniqueQueueName);
Run Code Online (Sandbox Code Playgroud)
这是在 Laravel 5.4 中。不确定这是如何向后兼容的。
| 归档时间: |
|
| 查看次数: |
6377 次 |
| 最近记录: |