php – Laravel Queue – 记住属性状态?
发布时间:2020-12-14 19:40:45 所属栏目:大数据 来源:网络整理
导读:如果作业失败,它将被推回到队列.有没有办法在再次处理作业时记住作业类中的属性值? 例如: class MailJob extends Job{ public $tries = 3; public $status; public function __construct() { $this-status = false; // set to false } /** * Execute the j
如果作业失败,它将被推回到队列.有没有办法在再次处理作业时记住作业类中的属性值?
例如: class MailJob extends Job { public $tries = 3; public $status; public function __construct() { $this->status = false; // set to false } /** * Execute the job. */ public function handle() { $this->status = true; // Assume job has failed,it went back to the Queue. // status should be true when this job start processing again } } 解决方法
如果要在同一时刻再次重新运行失败的进程.你可以做这样的事情.
在重新运行作业时,对象在内存中,因此数据可用. 我没有通过运行验证它,但希望它能工作 class MailJob extends Job{ public $tries = 3; public $status; public function __construct() { $this->status = false; // set to false } /** * Execute the job. */ public function handle() { $this->status = true; // Assume job has failed,it went back to the Queue. // status should be true when this job start processing again $failed = processFailedisConfirm(); if $failed == true && $this->tries > -1 { $this->tries = $this->tries - 1; $this->handel(); } }} processFailedisConfirm的示例可以是 public function processFailedisConfirm(){ // Core Process to be done in the Job $state = (Do Some Api Call); // Here just example,you may send email // Or can do the core Job Process // And depending on the Response of the // Process return true or false // Is Job failed or not ? if ( $state == "200" ){ return false; // Job is not failed } else { return true; // Job is failed } 过程逻辑失败与否取决于您正在进行的操作.因为我正在进行api调用,如果我得到200的响应,我的过程是成功的.否则进程失败.这个例子,不同api的成功响应可能与api设计师的desigend不同. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |