php artisan queue:work or listen 不工作 Laravel 5.4
php artisan queue:work or listen not working Laravel 5.4
我已经安装了 laravel 5.4 并想确认用户注册,通过带有队列的电子邮件,作业 table 已成功创建,数据也在 table 用户中插入,但是它当我 运行 PHP artisan queue: work 命令时什么都不输出。
我的 gmail 邮箱里什么也没有收到
我花了很多时间来解决它,但仍然无法正常工作。非常感谢任何帮助。
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:
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]);
}
}
}
在 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;
行,现在尝试此次数后,该作业将进入失败的作业队列,您可以检查异常的内容放在那里。
好吧,如果您在 que:listen 之后什么也看不到,并且邮件正在通过普通邮件 fascade 发送
你应该在 .env 中添加以下内容
que_connection=数据库
queue_driver=数据库
我已经安装了 laravel 5.4 并想确认用户注册,通过带有队列的电子邮件,作业 table 已成功创建,数据也在 table 用户中插入,但是它当我 运行 PHP artisan queue: work 命令时什么都不输出。 我的 gmail 邮箱里什么也没有收到 我花了很多时间来解决它,但仍然无法正常工作。非常感谢任何帮助。
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:
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]);
}
}
}
在 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;
行,现在尝试此次数后,该作业将进入失败的作业队列,您可以检查异常的内容放在那里。
好吧,如果您在 que:listen 之后什么也看不到,并且邮件正在通过普通邮件 fascade 发送 你应该在 .env 中添加以下内容 que_connection=数据库 queue_driver=数据库