Laravel数据库排队作业尝试

时间:2016-05-16 20:21:12

标签: php mysql laravel laravel-5 queue

我在Ubuntu 14.04服务器中使用数据库驱动程序实现了一个laravel队列。我执行此代码

php /path to app/artisan queue:listen --tries=3 --env=local

它表示尝试= 3。但是当我看到工作表时,我看到有22次尝试的工作,这怎么可能?它应该尝试3次,然后将其添加到failed_jobs表。

另外,jobs_在jobs表中的含义是什么?。

谢谢

顺便说一下,这项工作完美无缺

<?php

namespace App\Jobs;

use App\Jobs\Job;
use App\Notifiers\Im_Notification;
use App\Notifiers\Notification;
use App\Notifiers\Mail_Notification;
use App\Reservation;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

class NotifyPlaceReservationStatus extends Job implements ShouldQueue
{
    use InteractsWithQueue, SerializesModels;

/**
 * Create a new job instance.
 *
 * @return void
 */
protected $notification;
protected $reservation;
protected $info_changed;

public function __construct(Notification $notification,Reservation $reservation)
{
    $this->reservation = $reservation;
    $this->notification = $notification;
}

/**
 * Execute the job.
 *
 * @return void
 */
public function handle()
{
    $this->notification->notifyPlaceReservationStatus($this->reservation);
}

public function failed()
{
    error_log('Job failed');
}
}

1 个答案:

答案 0 :(得分:1)

当您在CLI中提供尝试次数时,Laravel工作人员将仅对当前在队列中的那些作业(或者如果您愿意,在未执行的作业表中)应用尝试限制。为了使作业的每次执行都有一个try限制,你应该在你的Job类中放置一个public $ tries属性,如Dispatching Jobs上的Laravel文档中所述(对于Laravel 5.4)

public $tries = 3;
protected $notification;
protected $reservation;
protected $info_changed;