我正在开发一个必须处理许多用户制作的调度任务的网站(使用 LAMP 堆栈)。它的工作原理如下:一个用户创建一个事件并设置一个日期,其他用户(多达 63 个)可以加入。在设定日期前几个小时,系统必须向每个订阅该事件的用户发送电子邮件。就是这样。
但是,我从来没有处理过调度,我知道的唯一工具(很差)是 cron 和 at。我的计划是为每个事件创建一个 at 工作,这将调用一个脚本来获取所有订阅者的电子邮件并邮寄给他们。
我的问题是:我的计划/设计好吗?是否可扩展?我应该注意哪些更好的选择?
我正在开发一个必须处理许多用户制作的调度任务的网站(使用 LAMP 堆栈)。它的工作原理如下:一个用户创建一个事件并设置一个日期,其他用户(多达 63 个)可以加入。在设定日期前几个小时,系统必须向每个订阅该事件的用户发送电子邮件。就是这样。
但是,我从来没有处理过调度,我知道的唯一工具(很差)是 cron 和 at。我的计划是为每个事件创建一个 at 工作,这将调用一个脚本来获取所有订阅者的电子邮件并邮寄给他们。
我的问题是:我的计划/设计好吗?是否可扩展?我应该注意哪些更好的选择?
为什么每个事件都有单独的 cron 作业?我为时事通讯做了类似的事情,cron 作业每小时运行一次,如果有任何时事通讯要发送,它只会处理它们。在您的情况下,您将有一个每小时运行一次的脚本,并获取在所需时间间隔内发生的事件的用户列表。
它会起作用的。就可扩展性而言,至少要确保脚本在它自己的进程中运行,这样它就不会不必要地阻塞服务器。
也许创建一个 php-cli 脚本?
我现在大部分工作都是在 Rails 中完成的,有很多后台处理库,其中之一是 Resque,它使用 redis 服务器来跟踪我找到的 PHP 克隆https://github.com/chrisboulton /php-resque
可能对您的用例来说有点过头了,但不妨试一试