在Laravel的特定日期听取和发送活动

时间:2015-02-22 01:00:17

标签: php events laravel-4 recurring-events timed-events

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

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

我想每个月向他们发送一个通知,所以在发送电子邮件之后我会在用户提供的旧通知日期添加一个月。添加一个月会很容易,因为我在保存通知日期时在输入上使用“Carbon”。

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

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

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

1 个答案:

答案 0 :(得分:1)

我觉得你想要完成的事情最好通过预定的命令来完成。有些人通过创建cron jobs来执行此操作,该dispatcher将在计划时调用某个函数。

在Laravel 4中(我假设这是你正在使用的),有一个名为incorporated into laravel 5的indatus包。我不打算如何设置它,因为它们有很好的文档,但你可以创建预定的工作,你会检查每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);
}

}

```

此功能已can be found here.,因此如果您使用该版本,则无需安装任何额外的软件包。

希望它有所帮助。

[编辑:] Jeffrey Way关于如何设置和使用调度员的精彩视频{{3}}