Первая отправка () для работы исчезает - PullRequest
0 голосов
/ 05 мая 2018

Моя настройка:

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

У меня очень странная ситуация с очередями. Я настроил базу данных в качестве драйвера очереди, но когда я использую консоль tinker для проверки диспетчеризации заданий, первое задание всегда исчезает: его нет в таблице jobs, его нет в таблице 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 голосов
/ 14 мая 2018

Присвойте его переменной, например:

$dispatched = \App\Jobs\AddToList::dispatch([])->onQueue('default')->delay(now());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...