关于通过 CRON 与在 Web MVC 框架内运行日常脚本的一般问题,例如Laravel

我有一个旧的 MVC 框架,我正在迁移到 Laravel,但目前仍在使用旧框架。我有一个脚本:

  1. 要求用户以具有管理员权限的用户身份登录。
  2. 在致电处理该事宜的控制器时,发送电子邮件和/或 SMS 约会提醒和其他消息。这在 WebApp 中运行良好。

我只想将它作为日常工作运行,这似乎最适合 CRON 工作。我可以将它设置为类似于这样的 CRON 作业。 不确定对于初学者来说“she-bang”应该是#!/bin/sh 还是#!/bin/bash。我可以添加一个授权和令牌标头以允许绕过需要用户在 webapp 端登录,这会更容易,因为它可以只使用 WebApp 上的内容。另一种方法是编写一个独立的脚本,这需要大量的工作,因为它使用电子邮件包、用于 SMS 的 AWS snS SDK 等。

#!/bin/sh vs. #!/bin/bash
#
# script to run the reminders web script

curl -v -k -H "Authorization:Bearer CRON" -H "Token:Token" https://domain.test/Reminders/sendReminders

自从我迁移到 Laravel 以来,看起来 Laravel 8.x 确实对任务管理和调度有一些支持:Task Scheduling,Laravel

我想也许我可以将我的代码迁移到 Laravel,然后在 Laravel 应用程序上实现一个任务计划程序来处理任务并以类似于 CRON 作业的方式运行,而无需设置和维护 CRON 作业?我仍然需要向 Laravel 添加相当多的代码(例如 Amazon SDK 设置、电子邮件模板等,但我最终还是需要这样做)。

我开始查看 Laravel 文档,它说我需要修改 App\Console\Kernel.php 文件以添加我的任务,可能是这样的,因为我有一个包含所有约会的 MySQL 约会表,还有一个处理发送提醒的方法。

protected function sendReminders(Appointments $appointments)
{
    $appointments->call(function () {
        DB::table('appointments')->sendReminders();
    })->daily();
}

我还没有在 Laravel 上尝试过,但在我开始之前想了解它是如何工作的。我不清楚它是如何“神奇地”定期执行的?只要服务器启动并运行,Laravel 中是否有某种后台进程可以处理所有这些?例如,我使用 NGINX 作为 Laravel 应用程序的服务器。如果服务器正在运行并且几天没有人登录甚至使用 Laravel WebApp,Laravel 如何知道执行该日常脚本?它必须在系统级别的幕后进行一些设置,以模拟操作系统对 CRON 作业的处理方式,或者具有作为后台进程运行并在触发运行时执行计划的内核控制台任务的脚本?

ck19911018 回答:关于通过 CRON 与在 Web MVC 框架内运行日常脚本的一般问题,例如Laravel

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1800.html

大家都在问