>  기사  >  PHP 프레임워크  >  Laravel에서 대기열 작업을 취소하는 여러 가지 방법

Laravel에서 대기열 작업을 취소하는 여러 가지 방법

PHPz
PHPz원래의
2023-04-21 10:00:502086검색

Laravel에서 Queue는 비동기 작업을 관리하는 효율적인 방법입니다. 대기열을 통해 시간이 많이 소요되는 작업을 백그라운드로 처리하여 시스템 성능과 안정성을 향상시킬 수 있습니다. 하지만 실제 개발에서는 대기열에 있는 작업을 취소해야 하는 경우가 있습니다. 이 글에서는 라라벨에서 큐 작업을 취소하기 위한 몇 가지 방법과 주의사항을 소개합니다.

큐 작업 취소 방법

  1. 큐 작업 삭제
    콘솔이나 코드에서 큐 작업을 수동으로 삭제하면 작업 취소 효과를 얻을 수 있습니다.

콘솔에서 다음 명령을 사용할 수 있습니다:

php artisan queue:failed
php artisan queue:forget {id}

그 중 queue:failed 명령은 ID 및 작업을 포함하여 실패한 모든 작업을 나열합니다. 실패 이유. queue:forget 명령은 주어진 ID를 기반으로 지정된 작업을 취소할 수 있습니다. 그러나 이 접근 방식은 대기열에서 실패한 작업에만 적용됩니다.

코드에서는 Queue의 deleteFailedJob 메서드를 사용하여 실패한 작업을 삭제하거나 Redis의 DEL 명령을 사용하여 실행 중인 작업을 삭제할 수 있습니다.

  1. Throw 예외
    Laravel에서는 예외를 발생시켜 작업 실행을 취소할 수 있습니다. 대기열 프로세서가 작업을 실행하는 동안 예외가 발생하면 자동으로 해당 작업을 실패한 작업으로 표시하고 대기열 로그에 오류 정보를 기록합니다. 핸들러가 예외를 포착하려면 작업에서 try-catch 블록을 래핑해야 합니다. 다음은 간단한 예입니다:

namespace AppJobs;

use Exception;
use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateFoundationBusDispatchable;
use IlluminateQueueInteractsWith Queue;
use IlluminateQueue SerializesModels;

class MyJob은 ShouldQueue를 구현합니다.
{

use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

public function handle()
{
    try {
        // 任务执行代码
    } catch (Exception $e) {
        // 抛出异常,取消任务
        throw new Exception('任务已取消');
    }
}

}

  1. 시간 초과 메커니즘 사용
    Laravel에서는 대기열 작업에 대한 시간 초과를 설정할 수 있습니다. 작업이 지정된 시간 내에 완료되지 않으면 프로세서는 자동으로 해당 작업을 실패한 작업으로 표시합니다. 이 메커니즘을 사용하여 실행 중인 작업을 취소할 수 있습니다. 다음은 간단한 예입니다.

namespace AppJobs;

use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateFoundationBusDispatchable;
use IlluminateQueueInteractsWithQueue;
use IlluminateQueueSerializesModels;

class MyJob은 ShouldQueue
{

use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

public $timeout = 10; // 设置超时时间为 10 秒

public function handle()
{
    // 任务执行代码
}

를 구현합니다. }

Notes

  1. 지연된 작업을 사용할 때는 주의하세요. 단순히 Queue의 삭제 메서드를 사용하여 작업을 삭제할 수는 없습니다. 지연된 작업의 ID는 타임스탬프를 기준으로 생성되므로 해당 작업을 삭제한 다음 동일한 작업에 새로운 지연된 작업을 추가하면 ID가 변경됩니다. 이는 새 작업을 추가하는 것과 같습니다.
  2. 모든 작업에는 시간 제한을 설정해야 합니다. 그렇지 않으면 작업 실행 시간이 너무 길어 성능 문제가 발생할 수 있습니다.
  3. 작업을 취소하기 위해 예외가 발생하는 경우 작업 프로세서에 오류가 발생할 경우 과도한 정보가 유출되지 않도록 예외 내용에 주의하세요.
  4. 위 방법 중 하나를 사용하여 대기열 작업을 취소하는 경우 향후 유지 관리 및 디버깅을 위해 취소 이벤트에 이벤트 로그가 기록되어야 합니다.

이 글에서는 Laravel에서 대기열 작업을 취소하는 몇 가지 방법과 주의 사항을 소개합니다. 작업 실행을 원하지 않는 경우 위의 방법을 사용하여 작업을 취소할 수 있습니다. 동시에 시스템 안정성과 성능을 보장하기 위해 실제 요구 사항과 조건에 따라 작업을 취소하는 적절한 방법을 선택해야 합니다.

위 내용은 Laravel에서 대기열 작업을 취소하는 여러 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.