在Queues Laravel上运行任务调度程序

时间:2017-10-26 15:23:35

标签: php laravel

//邮件验证文件

class EmailVerification extends Mailable
{

    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    protected $user;
    public function __construct($user)
    {
        $this->user = $user;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('frontend.email.activation')->with([
            'email_token' => $this->user->email_token,
        ]);
    }
}

// SendVerificationEmail

class SendVerificationEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    protected $user;
    public function __construct($user)
    {
        $this->user = $user;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $email = new EmailVerification($this->user);
        Mail::to($this->user->email)->send($email);
    }
}

我目前正致力于这个简单的laravel项目。我尝试使用队列来实现用户电子邮件激活功能。当我使用 php artisan queue:work 来运行它时它工作正常。我现在尝试创建一个任务计划程序,每五分钟执行一次

//代码在这里

protected function schedule(Schedule $schedule)
{
    $schedule->job(new SendVerificationEmail($user))->everyFiveMinutes();
}

但它返回未定义的变量。上面是否有错误,或者是否有更好的方法让队列自动运行?

1 个答案:

答案 0 :(得分:0)

请阅读:Laravel 5.5 Documentation - Queues#dispatching-jobs

你不能安排这种工作,你应该派遣它。