File "ClearCommand.php"
Full Path: /var/www/drive/laravel/horizon/src/Console/ClearCommand.php
File size: 2.03 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace Laravel\Horizon\Console;
use Illuminate\Console\Command;
use Illuminate\Console\ConfirmableTrait;
use Illuminate\Queue\QueueManager;
use Illuminate\Support\Arr;
use Laravel\Horizon\Contracts\JobRepository;
use Laravel\Horizon\RedisQueue;
use Symfony\Component\Console\Attribute\AsCommand;
#[AsCommand(name: 'horizon:clear')]
class ClearCommand extends Command
{
use ConfirmableTrait;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'horizon:clear
{--queue= : The name of the queue to clear}
{--force : Force the operation to run when in production}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Delete all of the jobs from the specified queue';
/**
* Execute the console command.
*
* @return int|null
*/
public function handle(JobRepository $jobRepository, QueueManager $manager)
{
if (! $this->confirmToProceed()) {
return 1;
}
if (! method_exists(RedisQueue::class, 'clear')) {
$this->components->error('Clearing queues is not supported on this version of Laravel.');
return 1;
}
$connection = Arr::first($this->laravel['config']->get('horizon.defaults'))['connection'] ?? 'redis';
if (method_exists($jobRepository, 'purge')) {
$jobRepository->purge($queue = $this->getQueue($connection));
}
$count = $manager->connection($connection)->clear($queue);
$this->components->info('Cleared '.$count.' jobs from the ['.$queue.'] queue.');
return 0;
}
/**
* Get the queue name to clear.
*
* @param string $connection
* @return string
*/
protected function getQueue($connection)
{
return $this->option('queue') ?: $this->laravel['config']->get(
"queue.connections.{$connection}.queue",
'default'
);
}
}