在time命令中执行定时命令


Execute a timed command in a time command

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

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

我正在考虑动态创建相同数量的cron jbo,这等于在给定日期生日的人。然后这些cron作业将发送短信给适当的人,这一次,就是这样。

我的问题是,有没有更聪明的方法来做到这一点?其次,如果cron作业生成的想法足够好,是否有一种方法可以删除单个旧的cron作业,这样我就不会用永远不会再运行的旧作业阻塞cron作业列表?

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

如果您的系统每5分钟左右运行一次cronjob(无论您需要多长时间),那么情况会好得多,并且该cronjob执行PHP脚本来确定此时或从现在到最后一次cronjob之间是否有任何消息要发送。

虽然这可能意味着您的用户可能会延迟5分钟收到消息,但这是不可能的,因为我知道没有人在8:02开始工作,因此,如果cronjob是在8:00、8:05、8:10等,您几乎总是会准时收到消息!

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