php artisan queue: работать или слушать не работает Laravel 5.4 - PullRequest
0 голосов
/ 10 мая 2018

Я установил laravel 5.4 и хочу подтвердить регистрацию пользователя, по электронной почте с очередью, таблица заданий успешно создана, данные также вставляются в пользователя таблицы, но при запуске PHP artisan queue: work ничего не выводится команда. и я ничего не получил в моем почтовом ящике Я потратил много часов, чтобы решить ее, но все еще не работает. Любая помощь будет очень признательна, большое спасибо.

Jobs / SendVerificationEmail Class:

    class SendVerificationEmail implements ShouldQueue
{
  protected $user;

    public function __construct($user)
    {
        $this->user = $user;
    }

    public function handle()
    {
        $data = ['email_token' => $this->user->email_token];

        Mail::send('email.email', $data, function($message) {
            $message->subject('This mail send by Queue Laravel 5.4');
            $message->to($this->user->email);
        });
    }
}

Класс Contoller / RegistrationController:

 class RegistrationController extends Controller
{
    public function create()
    {
        return view('register');
    }

    public function register(Request $request)
    {
        //create user
        $user = new User;
        $user->name = $request->name;
        $user->email = $request->email;
        $user->password = bcrypt($request->password);
        $user->email_token = base64_encode($request->email);

        $user->save();
        dispatch(new SendVerificationEmail($user));

        return view('verification');

        //add role by default the new registred saved as a User Role
        $user->roles()->attach(Role::where('name', 'User')->first());

        // redirect
        //return redirect('/posts');

        //login
        auth()->login($user);

    }
    public function verify($token)
    {
        $user = User::where('email_token',$token)->first();
        $user->verified = 1;
        if($user->save())
        {
            return view('emailconfirm',['user'=>$user]);
        }
    }
}

1 Ответ

0 голосов
/ 10 мая 2018

В конструкторе вашего задания SendVerificationEmail установите соединение и какую очередь вы не хотите использовать, например,

   public function __construct($user)
   {
        $this->queue = 'default'; //choose a queue name
        $this->connection = 'database';
        $this->user = $user;
   }

Затем, чтобы начать обработку этих заданий, используйте команду artisan

 artisan queue:work database --queue=default

Кроме того, в вашем задании SendVerificationEmail добавьте строку public $tries = 3; вверху файла, теперь после этого количества попыток задание попадает в очередь невыполненных заданий, и вы можете проверить содержимое исключения, которое его там поместило.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...