3

我正在使用一个 php 应用程序,我需要在其中检查今天过生日的用户数据库。这是我通过 cron 工作完成的。

现在,当我得到生日的用户时,我需要向他们发送短信。SMS 有一个单独的相关时间,该时间决定了何时发送 SMS。假设约翰和彼得今天过生日。彼得在 01-09 工作,所以他应该在 01 收到短信,而彼得在 08-16 工作,所以他应该在 08 收到短信。

我正在考虑动态创建相同数量的 cron jbos,这等于在给定日期过生日的人。然后,这些 cron 作业将这一次将 SMS 发送给适当的人,仅此而已。

我的问题是,有没有更聪明的方法来做到这一点?其次,如果 cron 作业生成的想法足够好,有没有办法删除单个旧的 cron 作业,这样我就不会将 cron 作业列表与永远不会再次运行的旧作业混在一起?

提前致谢。

4

2 回答 2

3

如果您想使用 cronjobs 在特定时间向每个人发送消息,那么您必须为每个人创建一个 cronjob。在我看来这是个非常糟糕的主意,因为你最终可能会得到超过 1000 个 cronjobs!

使用每 5 分钟左右运行一次 cronjob 的系统会好得多(无论您希望多久),并且此 cronjob 执行 PHP 脚本以确定当时或从现在到现在之间是否有任何消息要发送最后一个 cronjob。

虽然这可能意味着您的用户可能会迟到 5 分钟才能收到他们的消息,但这不太可能,因为我认识的任何人都不会在 8:02 开始工作,因此,如果 cronjob 是在 8:00、8:05、8:10 等,您几乎总能按时收到消息!

于 2013-04-19T09:42:36.927 回答
2

如果您担心创建太多 cron 作业(不确定有多少会在您的系统上出现问题),那么为什么不在操作系统级别只创建一个 cron 作业呢?然后你可以每隔 10 分钟左右调用一次你的程序,它可以检查是否有新人需要发送短信。

于 2013-04-19T09:36:38.883 回答