如何在redis上的laravel队列中获取所有挂起的作业?

rap*_*2-h 22 redis laravel

队列侦听器未在服务器上启动,某些作业被推送(使用Redis驱动程序).

我怎么能算上(或得到所有)这些工作?我没有找到任何工匠命令来获取这些信息.

小智 18

如果有人在这里寻找答案就是我这样做的方式:

$connection = null;
$default = 'default';

//For the delayed jobs
var_dump( \Queue::getRedis()->connection($connection)->zrange('queues:'.$default.':delayed' ,0, -1) );

//For the reserved jobs
var_dump( \Queue::getRedis()->connection($connection)->zrange('queues:'.$default.':reserved' ,0, -1) );
Run Code Online (Sandbox Code Playgroud)

$connection是Redis连接名称,默认为null,并且$queue是队列/管道的名称,默认为"默认"!

  • 对于 Laravel 5.8,我不得不使用 `lrange` 命令而不是 `zrange`。 (5认同)

Mou*_*gip 10

从Laravel 5.3开始,您可以简单地使用Queue::size()(参见PR).

  • 使用`Queue :: size('queue-name');`来指定队列。 (2认同)

Hyd*_* B. 7

您也可以直接使用Redis Facade:

use Redis;

\Redis::lrange('queues:$queueName', 0, -1);
Run Code Online (Sandbox Code Playgroud)

在Laravel 5.6中测试但应该适用于所有5.X.


Ale*_*dro 6

您可以安装地平线。Laravel Horizo​​n 提供了一个用于监控队列的仪表板,并允许您对队列进行更多配置。

composer require laravel/horizon

php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"
Run Code Online (Sandbox Code Playgroud)

您必须设置.env配置文件和config/horizon.php文件。

使用 Laravel 5.6 进行测试


Bơ *_*hứi 5

我是一个PHP Laravel开发人员,已经3年了,最近我才知道这些命令,真可惜。;(

如果将redis驱动程序用于队列,则可以按名称计数所有剩余的作业:

use Redis;

// List all keys with status (awaiting, reserved, delayed)
Redis::keys('*');

// Count by name
$queueName = 'default';
echo Redis::llen('queues:' . $queueName);

// To count by status:
echo Redis::zcount('queues:' . $queueName . ':delayed', '-inf', '+inf');
echo Redis::zcount('queues:' . $queueName . ':reserved', '-inf', '+inf');
Run Code Online (Sandbox Code Playgroud)

要立即查看结果,可以使用php artisan tinker并点击Redis::llen('queues:default');