web-dev-qa-db-ja.com

laravel redisのキューで保留中のすべてのジョブを取得する方法?

キューリスナーがサーバーで開始されず、一部のジョブがプッシュされました(Redisドライバーを使用)。

論文の仕事を数える(またはすべてを得る)にはどうすればよいですか?この情報を取得するための職人のコマンドは見つかりませんでした。

20
rap-2-h

誰かがまだここで答えを探しているなら、私はそれをする方法です:

$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は、デフォルトではnullであるRedis接続名であり、$queueはキュー/チューブの名前で、デフォルトでは「デフォルト」です!

16
Torgheh

Laravel 5.3なので、単にQueue::size()を使用できます( [〜#〜] pr [〜#〜] を参照)。

9
Mouagip

これを行うことで、Redis Facadeを直接使用することもできます。

use Redis;

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

Laravel 5.6でテスト済みですが、すべての5.Xで動作するはずです。

6
Hyder B.

私はPHP Laravel dev、3年、これらのコマンドを最近知ったばかりなので、恥ずかしいです。;(

キューにredisドライバーを使用している場合、count残りのすべてのジョブを名前で指定できます。

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

結果をすぐに表示するには、_php artisan tinker_を使用してRedis::llen('queues:default');を押します。

3

Horizo​​nをインストールできます。 Laravel Horizo​​nは、キューを監視するためのダッシュボードを提供し、キューに対してより多くの設定を行うことができます。

composer require laravel/horizon

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

.env構成ファイルとconfig/horizon.phpファイルを設定する必要があります。

Laravel 5.6でテスト済み

2
Alessandro

誰かがまだ古いバージョンのLaravelのアプローチを探している場合:

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