2017-01-18 5 views
0

실패한 경우 laravel queued job을 3 번 시도하도록 내 감독자를 구성했습니다. 아래는 내 작업자 구성의 샘플입니다.대기중인 작업이 실패한 후 실행되지 않도록하려면 어떻게합니까?

[program:laravel-worker] 
process_name=%(program_name)s_%(process_num)02d 
command=php home/vagrant/Code/lead_reactor/artisan queue:work database --sleep=3 --tries=3 --daemon 
autostart=true 
autorestart=true 
user=vagrant 
numprocs=8 
redirect_stderr=true 
stdout_logfile=home/vagrant/Code/lead_reactor/storage/logs/laravel-worker.log 

그러나 실패 또는 없음이 있는지 상관없이 한 번만 실행하려는 특정 laravel 작업 큐가 있습니다. 작업자 구성을 변경하지 않고 실패한 경우 향후 작업 실행 시도를 방지하려고합니다.

다음은 내 직업 클래스의 구조입니다.

class SendBugReports extends Job implements SelfHandling, ShouldQueue 
{ 
    use InteractsWithQueue, SerializesModels; 

    protected $bugReports; 

    /** 
    * Create a new job instance. 
    * 
    */ 
    public function __construct() 
    { 
     $this->bugReports = BugReport::all(); 
    } 

    /** 
    * Execute the job. 
    * 
    * @return void 
    */ 
    public function handle() 
    { 
     //job processes... 
    } 
} 

모든 도움을 주실 수 있습니다! :)

답변

1

당신은 attempts 방법을 사용하여 작업을 실행되었습니다 시도 횟수를 확인할 수 있습니다 내가 laravel의 문서화의 그 부분을 간과 바보입니다

public function handle() 
{ 
    if ($this->attempts() > 1) { 
     return; 
    } 
} 
+0

감사합니다. –