4

我正在尝试制作一个通知脚本供我自己使用。这是我想要实现的目标。当用户注册时,我正在获取他们的电子邮件地址和他们提供的通知日期并将它们保存在配置文件表中。现在,在指定的通知日期,应用程序将自动向他们发送一封电子邮件。到目前为止,我很容易做到这一点的想法是使用“事件”;但是,如果我错了,请随时纠正我。根据我的想法,这是我打算做的;对于电子邮件,我可能会注册一个类作为事件的数据。

但我的第一个问题是如何在该通知日期收听事件?

而且我想每个月向他们发送通知,因此在发送电子邮件后,我将在用户提供的旧通知日期上增加一个月。添加一个月会很容易,因为我在输入中使用“碳”,同时保存通知日期。

所以,我的第二个问题是在更新通知日期后如何再次收听该事件?

最后,如果我有 100 个用户,并且我想在他们给出的通知日期和特定日期(例如每个月初)向每个人发送相同的通知。我怎样才能经常这样做?

请随时提出任何可能易于实施的建议,而不是我的想法。

4

1 回答 1

1

我觉得你想要完成的事情最好通过预定的命令来完成。有些人通过创建将在计划时调用某个函数的cron 作业来做到这一点。

在 Laravel 4 中(我假设这是你正在使用的),indatus 有一个很棒的包,叫做dispatcher。我不会介绍如何设置它,因为它们有很好的文档,但是您可以创建计划的作业,您将每 x 天/分钟检查一次,等等。它也更具可读性。

与 cron 作业相比,Dispatcher 使其更具可读性,例如:

```使用 Indatus\Dispatcher\Scheduling\ScheduledCommand; 使用 Indatus\Dispatcher\Scheduling\Schedulable;使用 Indatus\Dispatcher\Drivers\DateTime\Scheduler;

类 MyCommand 扩展 ScheduledCommand {

//your command name, description etc.

public function schedule(Schedulable $scheduler)
{
    //every day at 4:17am
    return $scheduler
        ->daily()
        ->hours(4)
        ->minutes(17);
}

}

```

此功能已合并到 laravel 5中,因此如果您使用该版本,则无需安装任何额外的包。

希望能帮助到你。

[编辑:]可以在这里找到Jeffrey Way 制作的关于如何设置和使用调度程序的精彩视频。

于 2015-02-22T03:27:29.220 回答