Как отправить задание перед запуском команды 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);
}

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

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

Терминал не зависает, он просто ждет поступления заданий, вы можете попробовать вызвать любое из ваших заданий, и вы увидите, что они сохранены в таблице, и когда вы запускаете эту команду, он выполняет все эти задания.

Sergio 15.12.2020 07:58

@Sergio Я добавил обновление об этом, пожалуйста, проверьте его

user9259038 17.12.2020 16:12
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
2 006
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

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

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

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

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

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

Другие вопросы по теме