php - 在 Laravel 中的特定日期监听和触发事件

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

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

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

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

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

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

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

最佳答案

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

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

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

```使用 Indatus\Dispatcher\Scheduling\ScheduledCommand;
使用 Indatus\Dispatcher\Scheduling\Scheduable;
使用 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);
}

}

``

此功能已 incorporated into laravel 5因此,如果您使用该版本,则无需安装任何额外的软件包。

希望能帮助到你。

[编辑:] Jeffrey Way 关于如何设置和使用调度程序的精彩视频 can be found here.

关于php - 在 Laravel 中的特定日期监听和触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28653302/

相关文章:

php - Kohana 3.3 包罗万象的路线

jQuery 和 Vimeo Froogaloop API

c# - WinForm 控件事件处理程序顺序

java - GWT 2.1 : ResettableEventBus doesn't reset?

php - Laravel 4 查询生成器 SQL 语句

php - Laravel Excel - 仅返回行的第一列

php - laravel 如何找到模型与其在数据库中的表之间的连接

Php 得到完美的方形条件

php - Laravel 启动函数不从命名空间内部调用

PHP、ajax 和 JQplot