master

laravel/framework

Last updated at: 29/12/2023 09:24

RestartCommand.php

TLDR

This file contains the RestartCommand class which is responsible for restarting the queue worker daemons after they finish their current job.

Methods

handle

This method is responsible for executing the console command. It restarts the queue worker daemons by storing the current time in the cache and broadcasting a queue restart signal.

Classes

RestartCommand

The RestartCommand class extends the Command class and is used to restart the queue worker daemons after their current job. It has the following properties:

  • $name: The name of the console command (queue:restart).
  • $description: The description of the console command (Restart queue worker daemons after their current job).
  • $cache: The cache store implementation.

Note: There are no other classes in the file.

<?php

namespace Illuminate\Queue\Console;

use Illuminate\Console\Command;
use Illuminate\Contracts\Cache\Repository as Cache;
use Illuminate\Support\InteractsWithTime;
use Symfony\Component\Console\Attribute\AsCommand;

#[AsCommand(name: 'queue:restart')]
class RestartCommand extends Command
{
    use InteractsWithTime;

    /**
     * The console command name.
     *
     * @var string
     */
    protected $name = 'queue:restart';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Restart queue worker daemons after their current job';

    /**
     * The cache store implementation.
     *
     * @var \Illuminate\Contracts\Cache\Repository
     */
    protected $cache;

    /**
     * Create a new queue restart command.
     *
     * @param  \Illuminate\Contracts\Cache\Repository  $cache
     * @return void
     */
    public function __construct(Cache $cache)
    {
        parent::__construct();

        $this->cache = $cache;
    }

    /**
     * Execute the console command.
     *
     * @return void
     */
    public function handle()
    {
        $this->cache->forever('illuminate:queue:restart', $this->currentTime());

        $this->components->info('Broadcasting queue restart signal.');
    }
}