Как отправить задание перед запуском команды queue:work

Я хочу создать очередь для уведомлений по электронной почте, и это уведомление используется для входа на сайт.

Итак, в файле уведомлений я реализовал ShouldQueue, а затем успешно запустил php artisan queue:table и php artisan migrate на терминале.

После этого я изменил QUEUE_CONNECTION на .env на базу данных и, наконец, попытался запустить php artisan queue:table после запуска php artisan serve, но он вообще зависает:

захват терминала

Я даже снова запускал php artisan config:clear и php artisan queue:work, но все равно зависает!

ОБНОВЛЕНИЕ:

Как предполагает user1994, я должен отправить задание перед запуском этой команды, но я не знаю, как и куда его отправить.

Вот мой класс LoginToWebsiteNotification:

class LoginToWebsiteNotification extends Notification implements ShouldQueue
{
    use Queueable;

    /**
     * Create a new notification instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return ['mail'];
    }

    /**
     * Get the mail representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return \Illuminate\Notifications\Messages\MailMessage
     */
    public function toMail($notifiable)
    {
        return (new MailMessage)
            ->subject('u Loggedin')
            ->view('emails.login-to-website');
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toArray($notifiable)
    {
        return [
            //
        ];
    }
}

А вот как я назвал это уведомление от LoginController:

protected function authenticated(Request $request, $user)
{
    $user->notify(new LoginToWebsiteNotification());
    return $this->loggendin($request , $user);
}

Так что не могли бы вы помочь мне с этим, я был бы очень признателен за это!

Заранее спасибо...


person ruwroveajaic    schedule 15.12.2020    source источник
comment
Терминал не завис, он просто ждет поступления заданий, вы можете попробовать вызвать любое из ваших заданий, и вы увидите, что они сохранены в таблице, и когда вы запускаете эту команду, он выполняет все эти задания.   -  person Sergio    schedule 15.12.2020
comment
@Sergio Я добавил обновление об этом, пожалуйста, проверьте его   -  person ruwroveajaic    schedule 17.12.2020


Ответы (2)


Он не заморожен, он просто ждет работы. Итак, сначала отправьте задание, а затем вы увидите, как оно работает :)

Взгляните на эту официальную документацию о отправлении задания Laravel

person user1994    schedule 15.12.2020
comment
Я обновил свой вопрос вашим ответом, не могли бы вы проверить его, плз. - person ruwroveajaic; 17.12.2020
comment
Надеюсь, это поможет вам Добавить письма в очередь - person user1994; 18.12.2020

Как сказали user1994 и Серхио, он просто ждет задания. После того, как вы запустите свой php artisan queue:work, вы можете войти в систему через свое приложение, чтобы уведомление могло быть отправлено. Затем вы можете увидеть, как ваша работа запускается в консоли.

Вы также можете вручную вызвать отправку через php artisan tinker, а затем запустить:

User::find(1)->notify(new App\Notifications\LoginToWebsiteNotification)

Если вам не нравится держать консоль открытой и работающей, вы можете использовать драйвер sync для своей очереди в разработке.

person sykez    schedule 20.12.2020