Laravel安排一次性活动

问题描述

用户可以根据需要在我的应用程序中为随机日期设置营销电子邮件发送时间。至关重要的是,电子邮件必须在安排好时间后才开始准确发送出去。因此,该应用需要创建在特定日期和时间(直到分钟)内针对特定电子邮件一次触发的内容。将来其他发送的日期会更多,但是它们都是不同的(因此需要“运行每个xxx日期”以外的内容

我可以有一个Scheduler任务,该任务每分钟运行一次,以查看数据库中任何待处理任务的日期,然后转到发送需要发送的任务的命令。但是我正在运行一个多租户应用程序-可能不会重叠,但是对于每个租户来说,每分钟都可能会对多个数据库造成巨大的打击,因为每个租户都可以搜索成千上万条记录。

我需要(我认为)是一种以编程方式为每个发送日期设置时间表,然后将其删除方法。我喜欢this answer,或者也许使用->between($startMin,$endMin)而不使用每个xxx指令,甚至喜欢使用Scheduler中的cron函数为每个需要设置的组设置一次已发送。不确定我是否按照预期的方式使用了吗?

这还能行吗?我从测试方法中以编程方式创建了一个计划,然后根据我创建的$schedule的转储将其添加到计划队列中,显示了所有计划-但是没有通过此方法显示{{3} }:

$schedule = app()->make(\Illuminate\Console\Scheduling\Schedule::class);

$events = collect($schedule->events())->filter(function (\Illuminate\Console\Scheduling\Event $event) {
    return stripos($event->command,'YourCommandHere');
});

它也没有输出任何内容,所以我想知道是否不是通过编程方式在 Kernel.PHP 之外创建时间表的方法

还有另一种方法吗?我对调度程序不太了解,无法确定这些一次性调度是否永久保留在某个地方,是否在预定的单次使用后将其删除,占用了内存等?

真的很感谢您的帮助或指导。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)