Yii2 Queue как остановить выполнение текущей задачи?

В Yii2, компонент "Yii2 Queue" предоставляет возможность выполнять фоновые задачи в асинхронном режиме. Если вам нужно остановить выполнение текущей задачи, вы можете использовать один из следующих методов.

1. Используйте метод delete() внутри текущей задачи. Если вы вызовете этот метод, текущая задача будет удалена из очереди, и ее выполнение будет прервано. Пример:

use yiiqueueJobInterface;

class MyJob implements JobInterface
{
    public function execute($queue)
    {
        // Ваш код
        
        // Остановить выполнение текущей задачи
        $queue->delete();
    }
}

2. Вызовите исключение yiiqueueErrorJobException внутри текущей задачи. Если вы вызовете это исключение, текущая задача будет помечена как выполненная с ошибкой, и ее выполнение будет прервано. Пример:

use yiiqueueJobInterface;
use yiiqueueErrorJobException;

class MyJob implements JobInterface
{
    public function execute($queue)
    {
        // Ваш код
        
        // Остановить выполнение текущей задачи
        throw new ErrorJobException("Остановка текущей задачи");
    }
}

3. Используйте метод stop объекта очереди $queue. Если вы вызовете этот метод внутри текущей задачи, выполнение всех задач будет прекращено, включая текущую. Пример:

use yiiqueueJobInterface;

class MyJob implements JobInterface
{
    public function execute($queue)
    {
        // Ваш код
        
        // Остановить выполнение всех задач
        $queue->stop(true);
    }
}

Убедитесь, что вы вызываете один из этих методов в правильном контексте и в нужном месте внутри кода текущей задачи.

Кроме того, помните, что эти методы прерывают выполнение текущей задачи, но не всей очереди. Если вам нужно остановить все задачи в очереди, вам может потребоваться использовать другие методы или настройки, которые предоставляет компонент "Yii2 Queue".