Я хочу создать очередь для уведомлений по электронной почте, и это уведомление используется для входа на сайт.
Итак, в файле уведомлений я реализовал 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 Я добавил обновление об этом, пожалуйста, проверьте его
Он не заморожен, он просто ждет работы. Итак, сначала отправьте задание, а затем вы увидите, как оно работает :)
Взгляните на эту официальную документацию о Laravel отправляет задание
Как сказали user1994 и Sergio, «он просто ждет работы». После того, как вы запустите свой php artisan queue:work
, вы можете войти в систему через свое приложение, чтобы уведомление могло быть отправлено. Затем вы можете увидеть, как ваша работа запускается в консоли.
Вы также можете вручную запустить отправку через php artisan tinker
, а затем запустить:
User::find(1)->notify(new App\Notifications\LoginToWebsiteNotification)
Если вы не хотите, чтобы ваша консоль была открыта и работала, вы можете использовать драйвер sync
для своей очереди в разработке.
Терминал не зависает, он просто ждет поступления заданий, вы можете попробовать вызвать любое из ваших заданий, и вы увидите, что они сохранены в таблице, и когда вы запускаете эту команду, он выполняет все эти задания.