1

我正在开发一个必须处理许多用户制作的调度任务的网站(使用 LAMP 堆栈)。它的工作原理如下:一个用户创建一个事件并设置一个日期,其他用户(多达 63 个)可以加入。在设定日期前几个小时,系统必须向每个订阅该事件的用户发送电子邮件。就是这样。

但是,我从来没有处理过调度,我知道的唯一工具(很差)是 cron 和 at。我的计划是为每个事件创建一个 at 工作,这将调用一个脚本来获取所有订阅者的电子邮件并邮寄给他们。

我的问题是:我的计划/设计好吗?是否可扩展?我应该注意哪些更好的选择?

4

2 回答 2

2

为什么每个事件都有单独的 cron 作业?我为时事通讯做了类似的事情,cron 作业每小时运行一次,如果有任何时事通讯要发送,它只会处理它们。在您的情况下,您将有一个每小时运行一次的脚本,并获取在所需时间间隔内发生的事件的用户列表。

它会起作用的。就可扩展性而言,至少要确保脚本在它自己的进程中运行,这样它就不会不必要地阻塞服务器。

也许创建一个 php-cli 脚本?

我现在大部分工作都是在 Rails 中完成的,有很多后台处理库,其中之一是 Resque,它使用 redis 服务器来跟踪我找到的 PHP 克隆https://github.com/chrisboulton /php-resque

可能对您的用例来说有点过头了,但不妨试一试

于 2012-11-30T03:12:21.060 回答
1

如果您考虑使用应用程序服务器(而不是简单的 Web 服务器)的适当框架,Spring有一个易于使用的任务调度层。在服务器上调度作业确实需要的不仅仅是简单的 LAMP 安装所能做的,但我有一段时间没有使用 PHP,所以也许有一个等价物。

是一篇比较您的一些选项的文章。

于 2012-11-30T03:18:49.843 回答