【发布时间】:2014-11-15 04:03:18
【问题描述】:
我有一个充满用户帐户和与这些用户帐户相关联的其他信息的数据库。我想为用户提供设置自动电子邮件的功能,通知他们新数据已添加到与其帐户链接的各种表格中。
我不是在寻找完整的代码,而是在寻找正确方向的一点。最后一天我一直在搜索和阅读,对此我看到了许多不同的意见。
目标是用户将定义一个电子邮件地址和检查新数据的速率。例如,他们提供 test@test.com 和 15 分钟。完成此操作后,我想每 15 分钟检查一次新数据是否已添加到他们的帐户中,如果是,请通过电子邮件提醒他们。编写实际代码来执行此操作没有任何问题,只是不确定脚本的调度和自动化处理它的“正确”方法。
MySQL 采用调度程序 - 我不能使用它,因为它不仅仅是严格的数据库操作。我需要按计划实际运行 php 代码(发送电子邮件和其他内容),而不仅仅是在数据库中执行操作。
Cronjob - 我可以完成这项工作,但是,这将是一个 cron 作业来检查我数据库中的每个用户,并且必须以我提供给我的用户的最短时间间隔(1 分钟)进行检查。当然,我对数据库的初始查询只会返回它实际需要检查的那些(当前时间戳>最后警报时间戳+速率秒)我认为每分钟在我的数据库的整个用户集上运行此脚本将是性能问题,尤其是随着用户群的增长。使用此选项,我认为脚本还需要一些文件锁定,以防止它多次运行。
软件方面 - 由于数据库与用户安装在其计算机上的软件相关联,因此我还可以让软件以用户定义的速率间隔“命中”我创建的 php 脚本。如果他们将其设置为 15 分钟,那么它将每 15 分钟访问一次脚本进行检查。这也可以,但是随着用户群的增长,这是一个极端数量的对同一页面的相当频繁的点击,因为每个用户帐户都会在他们的间隔设置中这样做,但是,它也只会在软件运行时发生那个会减少那个数字的用户。
话虽如此,有什么建议吗?赞成和反对一种方法而不是另一种方法或其他一些我还没有遇到过的建议?
【问题讨论】:
-
如果你用你尝试过的代码来简化问题,人们会很容易回答
-
如果你阅读了我发布的内容,它会得到解释......就像我说的,我在编写代码时遇到了零问题。
-
你不想做对的部分是什么?是检查 15 分钟间隔的 cron 还是查询?
-
我想指出如何处理它的正确方向。我也没有创建 crons 的问题......我指出了我对上述不同选项的一些想法。该数据库中的用户数量每天都在增长,因此我将未来/长期视为实现自动化而不会出现问题的最佳方式。
标签: php mysql cron scheduled-tasks