Задания Laravel, похоже, выполняются столько же раз, сколько и позиция в очереди. - PullRequest
0 голосов
/ 13 мая 2018

Я использую задания Laravel и не знаю, является ли это поведением по умолчанию, или я что-то упускаю.

В моем контроллере я создал простой цикл for, который выполняет 5 итераций и каждыйИтерация запускает задание, которое регистрирует это число.

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Jobs\TestJob;

class TestController extends Controller
{
    public function test()
    {
        for($i = 0; $i < 5; $i++) {
            TestJob::dispatch($i);
        }
    }
}

, и в моем файле задания я просто вывожу вывод

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

class TestJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $count;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($count)
    {
        $this->count = $count;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        \Log::useFiles(storage_path() . '/logs/debug.log');
        \Log::debug('Running test' . $this->count);
    }
}

Это достаточно справедливо и работает так, как я ожидаю.Чего я не ожидаю, так это вывода.Почему я получаю

[2018-05-13 07:50:23] local.DEBUG: Running test0  
[2018-05-13 07:50:23] local.DEBUG: Running test1  
[2018-05-13 07:50:23] local.DEBUG: Running test1  
[2018-05-13 07:50:23] local.DEBUG: Running test2  
[2018-05-13 07:50:23] local.DEBUG: Running test2  
[2018-05-13 07:50:23] local.DEBUG: Running test2  
[2018-05-13 07:50:23] local.DEBUG: Running test3  
[2018-05-13 07:50:23] local.DEBUG: Running test3  
[2018-05-13 07:50:23] local.DEBUG: Running test3  
[2018-05-13 07:50:23] local.DEBUG: Running test3  
[2018-05-13 07:50:23] local.DEBUG: Running test4  
[2018-05-13 07:50:23] local.DEBUG: Running test4  
[2018-05-13 07:50:23] local.DEBUG: Running test4  
[2018-05-13 07:50:23] local.DEBUG: Running test4  
[2018-05-13 07:50:23] local.DEBUG: Running test4 

вместо

[2018-05-13 07:50:23] local.DEBUG: Running test0  
[2018-05-13 07:50:23] local.DEBUG: Running test1  
[2018-05-13 07:50:23] local.DEBUG: Running test2  
[2018-05-13 07:50:23] local.DEBUG: Running test3    
[2018-05-13 07:50:23] local.DEBUG: Running test4 

Если у меня есть другой код в дескрипторе вместо регистрации, будет ли это выполняться несколько раз?

...