web-dev-qa-db-fra.com

Comment obtenir tous les emplois en attente dans la file d'attente Laravel sur Redis?

Le programme d'écoute de file d'attente n'a pas été démarré sur un serveur, certains travaux ont été poussés (à l'aide du pilote Redis). 

Comment pourrais-je compter (ou obtenir tous) ces travaux? Je n'ai trouvé aucune commande d'artisan pour obtenir cette information.

16
rap-2-h

Si quelqu'un cherche toujours une réponse, voici comment je le fais:

$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 est le nom de la connexion Redis qui est null par défaut, et $queue est le nom de la file/tube qui est 'default' par défaut! 

13
Torgheh

Depuis Laravel 5.3, vous pouvez simplement utiliser Queue::size() (voir PR ).

7
Mouagip

Vous pouvez également utiliser directement la façade Redis en procédant comme suit:

use Redis;

\Redis::lrange('queues:$queueName', 0, -1);

Testé dans Laravel 5.6 mais devrait fonctionner pour tous les 5.X.

6
Hyder B.

Vous pouvez installer Horizon . Laravel Horizon fournit un tableau de bord pour surveiller vos files d'attente et vous permet de configurer davantage votre file d'attente.

composer require laravel/horizon

php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"

Vous devez définir le fichier de configuration .env et le fichier config/horizon.php.

Testé avec Laravel 5.6

2
Alessandro

Si quelqu'un cherche encore une approche pour les anciennes versions du Laravel:

$connection = 'queue';
$queueName = 'default';
$totalQueuedLeads = Redis::connection($connection)->zcount('queues:'.$queueName.':delayed' , '-inf', '+inf');
0
Tudor Corcimar

Je suis un PHP Laravel dev, depuis 3 ans, je connais ces commandes depuis peu, alors honte à moi. ; (

Si vous utilisez le pilote redis pour votre file d'attente, vous pouvez compter tous les travaux restants par nom:

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');

Pour voir le résultat immédiatement, vous pouvez utiliser php artisan tinker et cliquer sur Redis::llen('queues:default');.

0