queues - ¿Cómo obtener todos los trabajos pendientes en laravel queue en redis?
queues laravel example (6)
La escucha de cola no se inició en un servidor, algunos trabajos fueron enviados (usando el controlador Redis).
¿Cómo podría contar (o conseguir todos) estos trabajos? No encontré ningún comando artesanal para obtener esta información.
Desde Laravel 5.3 puedes simplemente usar Queue::size()
(ver PR ).
Puedes instalar Horizon. Laravel Horizon proporciona un panel de control para monitorear sus colas y le permite hacer más configuraciones a su cola.
composer require laravel/horizon
php artisan vendor:publish --provider="Laravel/Horizon/HorizonServiceProvider"
.env
configurar el archivo de configuración .env
y el archivo config/horizon.php
.
Probado con Laravel 5.6
Si alguien sigue buscando una respuesta aquí es la forma en que lo hago:
$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) );
$connection
es el nombre de la conexión de Redis que es nulo por defecto, y $queue
es el nombre de la cola / tubo que es "predeterminado" por defecto!
Si alguien todavía está buscando un enfoque para las versiones anteriores de Laravel:
$connection = ''queue'';
$queueName = ''default'';
$totalQueuedLeads = Redis::connection($connection)->zcount(''queues:''.$queueName.'':delayed'' , ''-inf'', ''+inf'');
Soy un desarrollador de PHP Laravel, hace 3 años, acabo de conocer estos comandos recientemente, así que me avergüenzo. ;
Si está utilizando el controlador redis
para su cola, puede contar todos los trabajos restantes por nombre:
use Redis;
$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'');
Para ver el resultado de inmediato, puede usar php artisan tinker
y pulsar Redis::llen(''queues:default'');
.
También puedes usar la Fachada Redis directamente haciendo esto:
use Redis;
/Redis::lrange(''queues:$queueName'', 0, -1);
Probado en Laravel 5.6 pero debería funcionar para todos los 5.X.