第一个dispatch()for job消失

时间:2018-05-05 16:30:05

标签: laravel

我的设置:

  • Ubuntu 16.04
  • Laravel 5.6
  • PHP 7.2.4
  • MySQL 5.7.22

队列非常奇怪。我已将数据库设置为队列驱动程序但是当我使用tinker控制台测试作业的调度时,第一个作业总是消失:它不在jobs表中,它是&#39 ; s不在failed_jobs表中,日志中也没有。每次我开始tinker的新会话时都会出现问题。如果我重复发送第二个,第三个,正确的时间等,一切都按预期工作。

这是一项我已定义的简单工作:

class AddToList implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    public $data;

    public function __construct($data)
    {
        $this->data = $data;
    }

    public function handle()
    {
        Log::info('List updated!');
        return; // temporarily added for testing

        // . . . other code
    }

我修补了:

>>> \App\Jobs\AddToList::dispatch([])->onQueue('default')->delay(now());
=> Illuminate\Foundation\Bus\PendingDispatch {#2312}

并没有,就像我上面所描述的那样。如果我第二次这样做:

>>> \App\Jobs\AddToList::dispatch([])->onQueue('default')->delay(now());
=> Illuminate\Foundation\Bus\PendingDispatch {#2315}

作业显示在jobs表格中,并根据需要进行处理。

任何人都有类似的事情吗?

1 个答案:

答案 0 :(得分:0)

将其分配给变量,如下所示:

$dispatched = \App\Jobs\AddToList::dispatch([])->onQueue('default')->delay(now());