【问题标题】:Setting up a cron job with Laravel and AWS使用 Laravel 和 AWS 设置 cron 作业
【发布时间】:2022-01-29 11:51:53
【问题描述】:

我有一份客户的电子邮件列表,我想每周发送促销和新闻。

如何使用 Laravel 在 AWS 上进行设置?

我目前所做的是使用 Laravel 的队列,如下所示:

website.com/api/SendScheduledEmail

到目前为止,我尝试过的是 Linux 上的 crontab,但我不知道如何使用它访问和执行我的 URL。

【问题讨论】:

  • Cron 作业不是使用 URL 触发的。它们由您的服务器运行,不需要 URL 端点。您应该了解 cron 作业的基础知识以及如何在您的服务器上设置它们。您使用的是 EC2 服务器吗,这就是您所说的 AWS 的意思吗?
  • 是的,我们正在使用 EC2。我想做的是每周向我们的客户发送电子邮件。如果使用 laravel 可以实现吗?顺便感谢您指出它不是由 URL 触发的。
  • 是的,很简单。为了完成这项工作,您需要做两件事。你需要在 Laravel 中创建一个 cron 作业命令。这些命令存储在 app/console/commands 目录中。这些由位于 app/console/kernel.php 的内核调度触发。内核说“每天在 X 时间运行 X 命令”。另一个步骤是设置一个守护程序在您的服务器上运行,以每分钟检查一次您的内核。整个过程在这里详细介绍:scotch.io/@Kidalikevin/how-to-set-up-cron-job-in-laravel

标签: laravel amazon-web-services amazon-ec2 architecture aws-lambda


【解决方案1】:

您可以按照@eResourcesInc 提到的内容添加如下所示的预定命令

 $schedule->command('command:send_newsletter')
            ->daily()
            ->appendOutputTo(storage_path('logs/send_newsletter.log'));

此处的文档:https://laravel.com/docs/5.8/artisan

如果您的任务可能需要很长时间/或消耗大量资源。也许您可以尝试无服务器,例如在 AWS 或阿里云中将任务作为函数运行。更多信息在这里:https://vapor.laravel.com

希望对你有帮助。

【讨论】:

    【解决方案2】:

    我们只需要向 AWS EC2 服务器添加一个 Cron 条目。首先,您必须通过 SSH 连接到您的服务器,然后运行以下命令

    crontab -e
    

    您可以从here获取详细信息

    【讨论】:

    • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
    猜你喜欢
    • 2017-04-20
    • 2017-10-11
    • 2017-02-13
    • 2015-02-10
    • 2011-08-15
    • 1970-01-01
    • 2017-03-22
    • 2018-04-09
    • 2020-04-11
    相关资源
    最近更新 更多