AdvancedQueueCommands.php in Advanced Queue 8
File
src/Commands/AdvancedQueueCommands.php
View source
<?php
namespace Drupal\advancedqueue\Commands;
use Consolidation\OutputFormatters\StructuredData\RowsOfFields;
use Drupal\advancedqueue\Job;
use Drupal\advancedqueue\ProcessorInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drush\Commands\DrushCommands;
class AdvancedQueueCommands extends DrushCommands {
protected $entityTypeManager;
protected $processor;
public function __construct(EntityTypeManagerInterface $entity_type_manager, ProcessorInterface $processor) {
parent::__construct();
$this->entityTypeManager = $entity_type_manager;
$this->processor = $processor;
}
public function process($queue_id) {
$queue_storage = $this->entityTypeManager
->getStorage('advancedqueue_queue');
$queue = $queue_storage
->load($queue_id);
if (!$queue) {
throw new \Exception(dt('Could not find queue "@queue_id".', [
'@queue_id' => $queue_id,
]));
}
$start = microtime(TRUE);
$num_processed = $this->processor
->processQueue($queue);
$elapsed = microtime(TRUE) - $start;
$this
->io()
->success(dt('Processed @count jobs from the @queue queue in @elapsed seconds.', [
'@count' => $num_processed,
'@queue' => $queue
->label(),
'@elapsed' => round($elapsed, 2),
]));
}
public function listQueues() {
$count_labels = [
Job::STATE_QUEUED => new TranslatableMarkup('Queued'),
Job::STATE_PROCESSING => new TranslatableMarkup('Processing'),
Job::STATE_SUCCESS => new TranslatableMarkup('Success'),
Job::STATE_FAILURE => new TranslatableMarkup('Failure'),
];
$queue_storage = $this->entityTypeManager
->getStorage('advancedqueue_queue');
$rows = [];
foreach ($queue_storage
->loadMultiple() as $queue) {
$jobs = [];
foreach ($queue
->getBackend()
->countJobs() as $state => $count) {
$jobs[] = sprintf('%s: %s', $count_labels[$state], $count);
}
$rows[] = [
'id' => $queue
->id(),
'label' => $queue
->label(),
'jobs' => implode(' | ', $jobs),
];
}
return new RowsOfFields($rows);
}
}