php - 在所有作业完成后轮询 Laravel 队列

标签 php laravel queue

是否有任何最佳实践来确定作业/工作人员何时完成处理 Laravel 队列?我能想到的唯一方法是轮询作业表以查看队列中何时不再有作业。

我面临的挑战是,我将定期向队列分配 1,000 个作业,然后在一段时间后再分配 1,000 个,然后再分配一个。如果可能的话,我希望能够在每批作业完成后触发一个事件。

感谢您的任何建议或指点。

最佳答案

不,没有这样的功能。然而,通过监听 Illuminate\Queue\Events\Looping 事件(在 Laravel 5.4 之前是 illuminate.queue.looping)并检查队列大小来实现很简单。

<?php

use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Queue\Events\Looping;

class QueueSizeCheckerAndEventThingieSubscriber {

    public function subscribe(Dispatcher $events) {
        $events->listen(Looping::class, self::class . '@onQueueLoop'); // >= 5.4
        $events->listen('illuminate.queue.looping', self::class . '@onQueueLoop'); // < 5.4
    }

    public function onQueueLoop() {
        $queueName = 'my-queue';
        $queueSize = Queue::size($queueName);

        if ($queueSize === 0) {
            // Trigger your event.
        }
    }

}

关于php - 在所有作业完成后轮询 Laravel 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41228745/

相关文章:

php - 在 PHP 中的特定行之后循环并更新 MySQL

laravel - 在 laravel 5.2 中将 http 重定向到 https

mysql - MySQL 是否有查询队列以及慢日志中的 query_time 后面是什么?

c++ - c2955 - 使用类模板需要参数列表。队列

php - cURL 帖子无法正常工作 PHP

php - htaccess重写URL php参数

php, mysql - 数据库错误连接太多

jquery - XHR 中的缓存不起作用

php - Laravel artisan down with message parameter with spaces 给出 Too many arguments, expected arguments "command"

javascript - 为基于 SQS 的工作人员设置 future 某个日期的任务?