2017-01-18 43 views
0

我已經配置了我的主管工作人員在發生故障時嘗試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方法來運行作業的嘗試次數:

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

感謝我傻我忽略laravel單證的一部分。 –