Size: a a a

Laravel Framework Russian Community

2020 December 09

NS

Nikita Sklyarov in Laravel Framework Russian Community
Макс Ильин
Салют!

Задавал уже этот вопрос, но так и не смог с ним разобраться.

Задача: после постановки job'a в очередь(queue) записать инфу о нем в БД.
Как это сделать хз. Прошу помощи.

В конструкторе джоба нет доступа к $this->job (он пустой), а метод handle()
срабатывает непосредственно при запуске задачи. Там this->job есть.

Ставлю job в очередь следующим образом:

 use Illuminate\Foundation\Bus\DispatchesJobs;

 $job = (new MyJob($data))
           ->onQueue('myqueue')
           ->delay(now()->addMinutes(1));

 $job_id = $this->dispatch($job);


Сразу после выполения этого кода в БД появляется запись в таблице job.

Мне нужно каким-то образом отследить этот момент. И получить информацию по джобу.

Мне посоветовали использовать события. У ларавеля есть т.н. Job Events.

Если в файле

 app/Providers/EventServiceProvider.php

в методе boot() вызвать следующий код, можно плучить доступ к job->payload

   Event::listen(JobProcessing::class, function ($event) {

       $payload = $event->job->payload();

       var_dump($payload);
   });

У лараверя есть следующие события для работы с очередями

JobProcessing
JobProcessed
JobFailed
JobExceptionOccurred
Looping
WorkerStopping

Проблема заключается в том, что нет события "постановки job'a в очередь (queue)".

Буду благодарен если натолкнете на мысль.. Уже запарился придумывать костыли :)
ух ты, какая стена текста)
источник

МИ

Макс Ильин in Laravel Framework Russian Community
Nikita Sklyarov
ух ты, какая стена текста)
Описал полностью с чем столкнулся. Не могу разобраться.
источник

А

Артём in Laravel Framework Russian Community
Макс Ильин
Салют!

Задавал уже этот вопрос, но так и не смог с ним разобраться.

Задача: после постановки job'a в очередь(queue) записать инфу о нем в БД.
Как это сделать хз. Прошу помощи.

В конструкторе джоба нет доступа к $this->job (он пустой), а метод handle()
срабатывает непосредственно при запуске задачи. Там this->job есть.

Ставлю job в очередь следующим образом:

 use Illuminate\Foundation\Bus\DispatchesJobs;

 $job = (new MyJob($data))
           ->onQueue('myqueue')
           ->delay(now()->addMinutes(1));

 $job_id = $this->dispatch($job);


Сразу после выполения этого кода в БД появляется запись в таблице job.

Мне нужно каким-то образом отследить этот момент. И получить информацию по джобу.

Мне посоветовали использовать события. У ларавеля есть т.н. Job Events.

Если в файле

 app/Providers/EventServiceProvider.php

в методе boot() вызвать следующий код, можно плучить доступ к job->payload

   Event::listen(JobProcessing::class, function ($event) {

       $payload = $event->job->payload();

       var_dump($payload);
   });

У лараверя есть следующие события для работы с очередями

JobProcessing
JobProcessed
JobFailed
JobExceptionOccurred
Looping
WorkerStopping

Проблема заключается в том, что нет события "постановки job'a в очередь (queue)".

Буду благодарен если натолкнете на мысль.. Уже запарился придумывать костыли :)
Ещё бы код заворачивал как код...
источник

NS

Nikita Sklyarov in Laravel Framework Russian Community
Макс Ильин
Описал полностью с чем столкнулся. Не могу разобраться.
Я не понял проблему...
- отправил задачу в очередь
- сделал запись в бд нужной тебе инфы
- вызвал событие типа NewJobCreated
- навешал на это событие обработчиков
или что ты хочешь?
источник

NS

Nikita Sklyarov in Laravel Framework Russian Community
кстати, что-то я не пойму, вы писали про хостинг, а в конфиге домены какие-то test.loc?)
источник

МИ

Макс Ильин in Laravel Framework Russian Community
Nikita Sklyarov
Я не понял проблему...
- отправил задачу в очередь
- сделал запись в бд нужной тебе инфы
- вызвал событие типа NewJobCreated
- навешал на это событие обработчиков
или что ты хочешь?
Отправил задачу в очередь. Как получить по job'у инфу? job->payload?
источник

Д

Дмитрий Чорный Севас... in Laravel Framework Russian Community
Домашний сервер
источник

T

Tor in Laravel Framework Russian Community
Laravel 8 отправка email через очередь

Запускаю демон
php artisan queue:work redis --queue=emails

Отправляю email в очередь
$message = (new OrderShipped($order))
               ->onConnection('redis')
               ->onQueue('emails');

Mail::to("email@email")
 ->queue($message);

И ничего
Failed:     App\Mail\OrderShipped
источник

NS

Nikita Sklyarov in Laravel Framework Russian Community
Tor
Laravel 8 отправка email через очередь

Запускаю демон
php artisan queue:work redis --queue=emails

Отправляю email в очередь
$message = (new OrderShipped($order))
               ->onConnection('redis')
               ->onQueue('emails');

Mail::to("email@email")
 ->queue($message);

И ничего
Failed:     App\Mail\OrderShipped
логи с ошибкой мы конечно же смотреть не будем, лучше экстрасенсов из чата призовем 🙃
источник

T

Tor in Laravel Framework Russian Community
да логи сам посмотрел, там все написано )))
источник

AB

Alex Berezhkovsky in Laravel Framework Russian Community
источник

Д

Дмитрий Чорный Севас... in Laravel Framework Russian Community
Короче, залил на сервак ubuntu 18.04, с теми же настройками, и всё работает
источник

AD

Andrey Dmitriyev in Laravel Framework Russian Community
Привет, ребят.
Кто-нибудь поднимал laravel рядом с minio?
Интересует - с нуля писали коннектеры?
Правильно понимаю что там по 1 запросу на картинку, если я список чего-либо вывожу?
источник

AD

Andrey Dmitriyev in Laravel Framework Russian Community
Andrey Dmitriyev
Привет, ребят.
Кто-нибудь поднимал laravel рядом с minio?
Интересует - с нуля писали коннектеры?
Правильно понимаю что там по 1 запросу на картинку, если я список чего-либо вывожу?
Аналогичный вопрос по selectel, если он является лучшей альтернативой
источник

SC

Sergey Chizhik in Laravel Framework Russian Community
Просто подкинул его как s3 хранилище и всё

Ссылки на файлы хранятся в бд. На страницу повставлял или по API отдал и норм
источник

А

Артём in Laravel Framework Russian Community
Dark mode на гитхабе, йо-хо-хо!
источник

А

Андрей in Laravel Framework Russian Community
@Adelf32 @perin  только меня не забаньте)))
источник

Н

Николай in Laravel Framework Russian Community
Здравствуйте, Вопрос не по laravel. После иморта в mysql ~400 тыс строк нагрузка на vps cpu 90-98% без запросов к самой бд.  В какую сторону копать?
источник

NS

Nikita Sklyarov in Laravel Framework Russian Community
Зайти на сервер, запустить top/htop для начала
источник

Н

Николай in Laravel Framework Russian Community
Nikita Sklyarov
Зайти на сервер, запустить top/htop для начала
через top и смотрел нагрузку. Там стабильно 90-98%
источник