get('glowingblue-redis.enableQueue', false)) { return; } /** @var ExtensionManager $extensions */ $extensions = resolve(ExtensionManager::class); (new Frontend('admin')) ->content([$this, 'adminWidgetAttributes']) ->extend($this->container, $extensions->getExtension('glowingblue-redis-setup')); /** @var Dispatcher $dispatcher */ $dispatcher = $this->container->make(Dispatcher::class); $dispatcher->listen(Looping::class, [$this, 'trackQueues']); } public function adminWidgetAttributes(Document $document) { /** @var Store $cache */ $cache = resolve('cache.store'); /** @var QueueContract $queue */ $queue = resolve(QueueContract::class); $queues = $cache->get('blomstra.queue.queues-seen') ?? []; if ($queue instanceof RedisQueue) { $load = []; foreach ($queues as $name) { $load[$name] = $queue->getRedis() ->connection($this->connection) ->llen('queues:' . $name); } } $document->payload['blomstraQueuesSeen'] = $queues; $document->payload['blomstraQueuesLoad'] = $load ?? null; } public function trackQueues(Looping $event) { /** @var Store $cache */ $cache = resolve('cache.store'); $queues = $cache->get('blomstra.queue.queues-seen') ?? []; $queues = array_merge($queues, (array) explode(',', $event->queue)); $cache->put('blomstra.queue.queues-seen', array_unique($queues), 60); } }