”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 Laravel 中创建计划任务?

如何在 Laravel 中创建计划任务?

发布于2024-11-03
浏览:903

大家好!今天,我将引导您完成在 Laravel 中创建计划任务的过程。我们将以向用户发送每日营销电子邮件为例。

第 1 步:创建电子邮件类

首先,让我们使用以下 Artisan 命令创建一个新的 Mailable 类:

php artisan make:mail DailyMarketingEmail --view

此命令在 App/Mail 目录中生成一个新的 Mailable 类,并在 resources/views/mail/ 目录中生成相应的视图文件 daily-marketing-email.blade.php。您可以在此视图文件中自定义电子邮件的内容。

第 2 步:创建 Artisan 命令

接下来,我们将创建一个 Artisan 命令来处理发送 DailyMarketingEmail。运行以下命令:

php artisan make:command SendDailyMarketingEmail

该命令会在app/Console/Commands目录下生成一个新的命令类。

第 3 步:了解命令结构

生成命令后,您将在生成的类中看到两个关键属性:

protected $signature:这定义了 Artisan 命令的名称和签名。
protected $description:这提供了命令的描述。
此类中的句柄方法是您定义命令逻辑的地方。

一切设置完毕后,您可以通过运行以下命令列出所有 Artisan 命令:

php 工匠

您应该在列表中看到您的命令:

How to create a scheduled Task in Laravel ?

第 4 步:实现命令逻辑

现在,让我们在handle方法中定义发送营销电子邮件的逻辑:

each(function ($user) {
            Mail::to($user->email)->send(new DailyMarketingEmail);
        });

    }
}

在handle方法中,我们从数据库中检索所有用户并向每个用户发送DailyMarketingEmail。

第 5 步:测试命令

您可以通过运行手动测试您的命令:

php artisan app:send-daily-marketing-emails

考虑使用 Mailtrap 或 MailHog 等工具在测试期间捕获和查看已发送的电子邮件。

第 6 步:安排命令

最后,为了每天自动发送这封电子邮件,我们需要在位于 app/Console/ 目录的 Kernel.php 文件的 Schedule 方法中安排命令:

command('app:send-daily-marketing-emails')->dailyAt('08:30'); 
    }

    /**
     * Register the commands for the application.
     */
    protected function commands(): void
    {
        $this->load(__DIR__.'/Commands');

        require base_path('routes/console.php');
    }
}

在这里,我们使用 dailyAt('08:30') 方法安排命令在每天上午 08:30 运行。您可以根据需要调整时间。

附加建议:

  1. 排队电子邮件:对于大量用户来说,将电子邮件排队而不是一次性发送所有电子邮件是一个很好的做法。这可以通过在 Mailable 类中实现 ShouldQueue 接口来完成。

  2. 性能注意事项:对于大型用户群,请考虑优化数据库查询和电子邮件发送过程,以确保高效的性能。

版本声明 本文转载于:https://dev.to/kepsondiaz/how-to-create-a-scheduled-task-in-laravel--54a0?1如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3